Xcode4.5出现时的OC新语法
来源:互联网 发布:淘宝店企业转个人 编辑:程序博客网 时间:2024/05/21 11:28
@synthesize 可以不用再写了
如果在.h文件里有
那么可以认为 编译器会类似在.m文件里生成
如果上面的都不认识 就可以认为 以下代码
和下面的代码没有太大区别(如果在ARC时代写retain、release。。。。)
@literals
@除了可以表示NSString对象外。现在还可以表示数字、数组、字典、和表达式
然后就是这些东西可以互相嵌套,比如
NSArray 和 NSDictionary 可以使用[]语法了
现在可以直接写:
替代以前的
用
替代以前的
在.m自己用的“私有”消息可以不用ClassExtension表达了。
想在.m文件里添加自己的一些消息(方法、函数 同义)而不在.h文件里出现,可以在最近的ClassExtension语法里表达如下
现在 可以直接在.m文件里写,而编译器不会出现警告此方法未声明
如果不知道ClassExtension语法的,
我只想说,ClassExtension是类似Category语法的东西,在.m文件内添加一个无名的Category的@interface声明,然后就可以在里面写私有方法声明,避免编译器乱提示警告。
如果不知道Category语法。。。。。。。。。。。。。。。。
如果在.h文件里有
1
@propery
NSObject
* aProperty
那么可以认为 编译器会类似在.m文件里生成
1
@synthesize
aProperty = _aProperty
如果上面的都不认识 就可以认为 以下代码
1
2
3
4
5
6
7
8
9
@interface
Spouce:
NSObject
@property
(strong)
NSObject
* child
@end
@implement
Spouce
@end
和下面的代码没有太大区别(如果在ARC时代写retain、release。。。。)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@interface
Spouce:
NSObject
{
NSObject
* _child;
}
- (
NSObject
*) child;
- (
void
) setChild:(
NSObject
*) aChild;
@end
@implement
Spouce
- (
NSObject
*) child{
return
_child;
}
- (
void
) setChild:(
NSObject
*) aChild{
[aChild retain];
[_child release];
_child = aChild;
}
@end
@literals
@除了可以表示NSString对象外。现在还可以表示数字、数组、字典、和表达式
1
2
3
4
5
6
7
8
NSString
* string = @
"a string object"
;
NSNumber
* numberFromNumber=
@12
;
NSNumber
* numberFromExpression= @(20 + 40);
NSArray
* array = @[obj1, obj2];
//注意上面不再需要nil结尾
NSDictionary
* dictionary = @{@
"key1"
: value1, @
"key2"
: value2};
//上面也不再需要了,而且key在value前面了。。
然后就是这些东西可以互相嵌套,比如
1
NSArray
* array = @[@{@
"name"
: @
"Bacon"
, @
"age"
:
@12
}, @{@
"name"
: @
"Dave"
, @
"age"
:
@14
}];
NSArray 和 NSDictionary 可以使用[]语法了
现在可以直接写:
1
2
id
firstElement = anArray[0];
anArray[0] = newValue;
替代以前的
1
2
id
firstElement = [anArray objectAtIndex:0];
[anArray replaceObjectAtIndex:0 withObject:newValue];
用
1
2
id
value = aDictionary[@
"key"
];
aDictionary[@
"key"
] = newValue;
替代以前的
1
2
id
value = [aDictionary objectForkey:@
"key"
];
[aDictionary setObject:newValue forKey:@
"key"
];
在.m自己用的“私有”消息可以不用ClassExtension表达了。
想在.m文件里添加自己的一些消息(方法、函数 同义)而不在.h文件里出现,可以在最近的ClassExtension语法里表达如下
1
2
3
4
5
6
7
8
9
10
11
12
@interface
AClass ()
- (
void
) privateMethod;
@end
@implement
AClass
- (
void
) privateMethod{
}
@end
现在 可以直接在.m文件里写,而编译器不会出现警告此方法未声明
1
2
3
4
5
6
@implement
AClass
- (
void
) privateMethod{
}
@end
如果不知道ClassExtension语法的,
我只想说,ClassExtension是类似Category语法的东西,在.m文件内添加一个无名的Category的@interface声明,然后就可以在里面写私有方法声明,避免编译器乱提示警告。
如果不知道Category语法。。。。。。。。。。。。。。。。
0 0
- Xcode4.5出现时的OC新语法
- Xcode4.5出现时的OC新语法
- xcode4.5 新语法
- UIImagePickerController出现时,statusBar消失的解决办法
- 添加每个cell出现时的动画
- UITableViewCell刚出现时,出现的动画
- iOS OC里的新语法
- 当异常出现时
- 当异常出现时
- 当异常出现时
- OC新语法总结
- marquee和flash同时出现时的冲突
- 去除Dialog出现时背景变暗效果的方法
- 当借口出现时,想想当初的梦想!
- jquery实现隐藏的div出现时滑动效果
- 诚风老师-新一轮暴富机会将会出现时,大多数人“死”在别人嘴里!!!
- IOS界面不出现时
- Xcode4.4、4.5新特性,LLVM 4.0新语法
- js获取url传递参数(附其他参数办法)
- Android线程优先级
- WPF学习第六集-控件与布局
- 如何在Linux下自动启动Oracle服务
- 根据Hibernate实体对象,自动生成数据字典
- Xcode4.5出现时的OC新语法
- HDU 1176(时间dp)
- Python容易混淆的地方
- 程序员编程艺术第三十九~四十章:最近公共祖先LCA、打印螺旋矩阵
- url
- 委托、匿名委托和Lamda表达式
- strlen(一个没有初始化的字符数组)
- Activex、 OLE、 COM、 OCX、 DLL之间有什么区别?
- __init__与__new__的区别