object c 静态、动态问题

1、什么时候使用静态方法+,什么时候使用动态方法-2、为什么调用类里面的参数需要get和set,而不能直接调用,例如@interfacetest:NSObject{int... 1、什么时候使用静态方法+ ,什么时候使用动态方法-
2、为什么调用类里面的参数需要get和set,而不能直接调用,例如
@interface test:NSObject{
int _num;

-(int)num{
return _num;
}
-(void)setNum:(int)num{
_ num=num;

}
这里为什么是动态-,然后为什么调用参数num是需要函数num、setNum来调用,不能直接用test.num和test.num=xxx直接调用
展开
 我来答
帐号已注销
推荐于2016-10-15 · TA获得超过2391个赞
知道小有建树答主
回答量:849
采纳率:69%
帮助的人:420万
展开全部

不用灰心啊,我来跟你说明白。

第一个问题:-这是对象方法,+这是类方法。顾名思义,-方法必须通过对象调用,而+必须通过类调用。


第二个问:你代码写的就是手动写get/set方法。在XCODE4.5之后,你直接用

@protected声明成员属性就好了,不用手动写set和get方法,而为什么是-而不是+,第一个回答说得很清楚了。这是一个对象方法而不是类方法,你没alloc一个堆内存空间,能有成员属性吗?

而且为什么不能直接用test.num和test.num=XXX。这个问题简单,我写个demo代码给你看你就清楚了,这是一个懒加载。

- (NSArray *)statusFrames
{
    if (_statusFrames == nil) {

        NSString *path = [[NSBundle mainBundle] pathForResource:@"statuses.plist" ofType:nil];
        

        NSArray *dictArray = [NSArray arrayWithContentsOfFile:path];

        NSMutableArray *statusFrameArray = [NSMutableArray array];
        for (NSDictionary *dict in dictArray) {
            
            MJStatus *status = [MJStatus statusWithDict:dict];
            
        MJStatusFrame *statusFrame = [[MJStatusFrame alloc] init];
            statusFrame.status = status;
            
         [statusFrameArray addObject:statusFrame];
        }
        
     _statusFrames = statusFrameArray;
    }
    return _statusFrames;
}

问题来了,为什么要_statusFrames == nil,而不直接用点语法呢?因为用点语法会进入死循环。。点语法的本质就是get方法。

追问
懂了 谢谢
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式