美文网首页程序开发那些开发的事寒哥管理的技术专题
关于XCode7你以为只有Swift (objc语法增强)

关于XCode7你以为只有Swift (objc语法增强)

作者: 南栀倾寒 | 来源:发表于2015-06-11 10:28 被阅读2031次

写在开头 iOS开发者 群532084214 给大家提供一个交流技术 也可以聊天打屁的平台

  • 千呼万唤始出来的泛型语法

目前只支持NSArray NSSet NSDictionary

 NSArray<UIImage *> *images;
 NSDictionary<NSString *, NSURL *> *resourcesByName;

泛型和id类型配合(kind of)
在Objc中 我们知道id是万能指针 可以呼出来任何继承NSObject的方法 配合泛型使用就是可以呼出来泛型的父类的所有方法

-[UIView subviewWithTag:]取出来是 个 UIView*
可以直接调用UIView的方法

 UIButton *button = [view subviewWithTag:0]; // okay: UIButton is a UIView
[[view subviewWithTag:0] setTitle:@"Bounded" forState:  UIControlStateNormal]; //
okay: method found in UIButton
UIResponder *responder = [view subviewWithTag:0]; 
 // okay:      UIView is a UIResponder
 NSString *string = [view subviewWithTag:0]; 
// error: UIView is unrelated to NSString
  • NS_SWIFT_NAME宏 可以在混编时导入到Swift自定义名称

    typedef NS_ENUM(NSInteger, DisplayMode) {
   DisplayMode256Colors NS_SWIFT_NAME(With256Colors),
   DisplayModeThousandsOfColors,
   DisplayModeMillionsOfColors
 };

导入到Swift就是

 @objc enum DisplayMode : Int {
   case With256Colors
   case ThousandsOfColors
   case MillionsOfColors
}

再比如

@interface MyController : UIViewController
 + (instancetype)standardControllerForURLKind:(URLKind)kind
 NS_SWIFT_NAME(init(URLKind:));
 @end

到swift就是

   class MyController : UIViewController {
   init(URLKind kind: URLKind)
 }

相关文章

网友评论

本文标题:关于XCode7你以为只有Swift (objc语法增强)

本文链接:https://www.haomeiwen.com/subject/dnsjqttx.html