1 、Selector(oc/swift)中调用swift类中私有方法需要在方法前声明 @objc
@objc private func privateSayHello(){
print("\(__FUNCTION__)")
}
比如NStime ,performSelector中用到Selector:
[video performSelector:@selector(privateSayHello)];
2、 swfit提供oc调用接口
在swift类前加 @objc可以提供给oc调用的接口(xcode7beta4之前)
还可以让swift继承NSOject实现同样的效果。
ps:在xcode7beta4必须继承NSOject,只写 @objc会报错:Only classes that inherit from NSObject can be declared @objc
class VideoItem:NSObject{
weak var delegate:MyClassDelegate?
var name: String
init(name:String){
self.name = name
}
}
3、 修改swift中类名/属性名/方法名给oc使用
@objc(GameSwfitItem)
class GameItem:NSObject{
@objc(swiftName)
var name: String
@objc(initSwift:)
init(name:String){
self.name = name
}
}
GameSwfitItem *game = [[GameSwfitItem alloc] initSwift:@"007g"];
NSLog(@"%@",game.swiftName);
4 、提供可选协议给类使用
@objc protocol OptionalProtocol{
@objc optional func optionalMethold1()
@objc optional func optionalMethold2()
func requestMethold1()
}
局限性:加@objc的协议只能类使用(继承oc的类或加@objc的类),struct,enum不可以使用。
每个可选方法都需要加optional
swfit2中推荐可选方法用protocol eatension实现可选方法
5、 weak delegate
protocol MyClassDelegate{
func methold1()
}
class VideoItem:NSObject,MyClassDelegate{
weak var delegate:MyClassDelegate?
}
你直接这样写会报错:'weak' cannot be applied to non-class type ‘MyClassDelegate’,因为struct,enum中在arc中没有weak这种概念,不是引用计数来管理内存的。
可以在protocol前加@objc
@objc protocol MyClassDelegate{
func methold1()
}
或者在protocol声明后加class
protocol MyClassDelegate:class{
func methold1()
}
这样他们只能被类使用,其实用class更能表现问题的实质,同时避免了过多不必要的oc兼容。
相关推荐
@IBAction @objc(tapRed:) func tapRed(_ sender: AnyObject) { MyThemes.switchTo(theme: .red) } @IBAction @objc func tapYellow(_ sender: AnyObject) { MyThemes.switchTo(theme: .yello) } ...
赠送jar包:j2objc-annotations-1.1.jar; 赠送原API文档:j2objc-annotations-1.1-javadoc.jar; 赠送源代码:j2objc-annotations-1.1-sources.jar; 赠送Maven依赖信息文件:j2objc-annotations-1.1.pom; 包含...
只用来下载WSDL2Objc第三方开发代码包的,用于iOS的websevrice
结合objc_class的数据结构,分析了objc_msgSend的具体执行流程
@objc optional func didAddScriptMessage(webView:WKWebView,message:WKScriptMessage) //页面执行JS方法 @objc optional func didRunJavaScript(webView:WKWebView,result:Any?,error:Error?)
支持自定义格式化,拼音大小写等等; 3.拼音数据完整,支持中文简体和繁体,与网络上流行的相关项目比,数据很全,几乎没有出现转换错误的问题。 性能比较: 与之前的pinyin,POAPinyin和PYMethod等项目比较,PinYin...
objc 本地读取网页并使用正则表达式处理
如果想真正了解ios底层原理,除了阅读源码,没有捷径可走,但是没有一个可编译调试的环境,进阶无从谈起,本资源包为想进阶ios底层的小伙伴提供了可编译版本,编译的版本为苹果开源版本objc4-objc4-841.13,M1的电脑...
Objc中国 APP 架构 完整版 高清
高清正版 objc中国 CoreData
Core Data objc Core Data objc Core Data objc Core Data objc Core Data objc
objc语言源代码。阅读时可以先浏览一下所有的runtime API,就可对objc语言的实现原理有大致的了解,后续阅读才会更清晰。
objc 中国 最新版本的 app架构 ,https://objccn.io/products/
objc.io app architechture 中文版 APP 架构 iOS objc.io app architechture 中文版 APP 架构 iOS
Objc 最新 App 架构 ePub版本,分享给大家。
赠送jar包:j2objc-annotations-1.1.jar; 赠送原API文档:j2objc-annotations-1.1-javadoc.jar; 赠送源代码:j2objc-annotations-1.1-sources.jar; 赠送Maven依赖信息文件:j2objc-annotations-1.1.pom; 包含...
赠送jar包:j2objc-annotations-1.3.jar; 赠送原API文档:j2objc-annotations-1.3-javadoc.jar; 赠送源代码:j2objc-annotations-1.3-sources.jar; 赠送Maven依赖信息文件:j2objc-annotations-1.3.pom; 包含...
@objc dynamic var title: String = " " } AppDelegate application. registerForRemoteNotifications () syncEngine. register ( models : [SimpleNote. self ]) syncEngine. start () 同步 syncEngine.sync() ...