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直接调用 展开
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直接调用 展开
展开全部
不用灰心啊,我来跟你说明白。
第一个问题:-这是对象方法,+这是类方法。顾名思义,-方法必须通过对象调用,而+必须通过类调用。
第二个问:你代码写的就是手动写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方法。
追问
懂了 谢谢
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询