oc怎么调用swift写的单利_oc 无法调用 swift单利 - CSDN
  • Swift创建了这样的一个单例 @objc open class Danli: NSObject { static let ... //在oc中这样才能被调用 @objc open class func sharedInstance() -> Danli { return NFX.sw...

    Swift创建了这样的一个单例

    @objc
    open class Danli: NSObject
    {
    	static let swiftSharedInstance = Danli()
    	//在oc中这样写才能被调用
    	@objc open class func sharedInstance() -> Danli
        {
            return NFX.swiftSharedInstance
        }
    	
    	//下面的方法这样写
    	@objc open func start()
        {
    	    //TODO...
        }
    }
    

    可以看出来在前面除了加@objc,还要加open
    修饰符排行,越大越随心使用
    open> public > interal > fileprivate > private

    展开全文
  • 一、MySingle类 import Foundation class MySingle{ //定义单例的属性 var name:String? var age:Int? var height:Double? //定义类方法 class func shareInstance()->MySingle{ struct qzSingle

    一、MySingle类

    import Foundation
    
    class MySingle{
        //定义单例的属性
        var name:String?
        var age:Int?
        var height:Double?
        //定义类方法
        class func shareInstance()->MySingle{
            struct qzSingle{
                static var predicate:dispatch_once_t = 0
                static var instance:MySingle? = nil
            }
            dispatch_once(&qzSingle.predicate,{
                    qzSingle.instance = MySingle()
                })
            return qzSingle.instance!
        }
    }
    


    二、AppDelegate中调用

    //单例的使用
            var single = MySingle.shareInstance()
            single.name = "秦志伟"
            single.age = 24
            single.height = 176.00
            
            println(single)
    

    运行结果:has 3 children
    展开全文
  • Swift3 单例模式

    2017-06-14 10:05:06
    常见的有这么几种方法 第一种简单到爆的 final class Single: NSObject { static let shared = Single() private override init() {} } final关键字的作用是这个类或方法不希望被继承和重写 第二种 ...

    常见的有这么几种方法

    第一种最简单也是最常用的,这里的所有单例init方法一定要定义成private的,不然外部依然可以使用init方法初始化变量。

    final class Single: NSObject {
        static let shared = Single()
        private override init() {}
    }

    final关键字的作用是这个类或方法不希望被继承和重写

    第二种

    public extension DispatchQueue {
        private static var onceToken = [String]()
        public class func once(_ token: String, _ block:@escaping () -> Void) {
            objc_sync_enter(self)
            defer {
                objc_sync_exit(self)
            }
            if onceToken.contains(token) {
                return
            }
            onceToken.append(token)
            block()
        }
    }
    
    final class Single2: NSObject {
        static func shared() -> Single2 {
            struct Singleton {
                static var single = Single2()
            }
            DispatchQueue.once("YouShaoduo") {
                Singleton.single = shared()
            }
            return Singleton.single
        }
        
        private override init() {}
    }

    第二种完全是OC风格的单例,但是由于Swift3中废弃了原来的dispatch_once_t,所以需要先给DispatchQueue添加一个extension,实现原先的dispatch_once_t效果


    第三种

    private let single = Single3()
    final class Single3: NSObject {
        static var shared: Single3 {
            return single
        }
        
        fileprivate override init() {}
    }


    第四种

    final class Single4: NSObject {
        static var shared: Single4 {
            struct Static {
                static let instance: Single4 = Single4()
            }
            return Static.instance
        }
        private override init() {}
    }

    在方法内定义静态变量

    展开全文
  • Swift 4.0学习之:单例

    2018-03-15 09:19:32
    Swift中的单例非常简单,往小了说,用 let 去修饰,在类外,就是一个全局可用的单例。 如果想要像OC一样一个单例类,也非常的简单,如下 //单例类 import UIKit //仿OC写法 class danli: NSObject { static ...

    单例


    Swift中的单例非常简单,往小了说,用 let 去修饰,写在类外,就是一个全局可用的单例。
    如果想要像OC一样写一个单例类,也非常的简单,如下

    //单例类
    import UIKit
    //仿OC写法
    class danli: NSObject {
        static let instance: danli = danli()
        class func sharedDanli() -> danli {
            return instance
        }
    }
    //简便写法
    class danli2 {
        static let `default` = danli2()
    }

    相比OC要先在.h文件里声明一个方法,又要在.m里面写实现,又要加一个线程锁是不是简单了很多,OC写法如下:

    //首先.h文件里声明
    //单例类
    @interface danli : NSObject
    + (instancetype)sharedDanli;
    @end
    
    //然后.m文件里写实现
    @implementation danli
    + (instancetype)sharedDanli {
        static danli *dan = nil;
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            dan = [self new];
        });
        return dan;
    }
    
    展开全文
  • 最近抽风 粗略撸了几天的swift基础资料, 新项目就用swift写的.基本上是解决一个问题又碰到一个问题. 走到哪儿卡到哪儿 关于单例OC没什么好说的 . 度娘搜了下swift的单例,无外乎抄来抄去. 当然讲的讲的也挺好. ...
  • 2020-面试总结-iOS

    2020-07-06 10:52:33
    笔者也没有逃过在这一年出去找工作的命运 先说一下自身的条件 (主攻iOS(OCswift)方向,辅助java后台开发 js前端开发) 1、普通的本科 2、工作4年多 3、工作经历 只有一家大厂经历 上面就是笔者的基本...
  • 学习swift有段时间了,原来过一个基于 swift 3.0 的视频播放,后来有同学联系我说,在音频锁屏的情况下,无法用控制面板拖动进度条调节播放进度,所以又将原来的代码拿过来重新整理了下也顺便更新到了4.0版本。...
  • 1.线程安全的懒初始化 class SingletonA {static let sharedInstance = SingletonA()init() { println("AAA"); } }2.在这里,我们使用一个嵌套的结构静定为类常量。 class SingletonB {class var sharedInstance: ...
  • 单利的创建 iOS

    2016-02-18 17:32:44
    单例模式 至于什么是单例模式,我也不多说,我只说说一般怎么实现。在 Objective-C 中,实现单例的方法已经很具体了,虽然有别的方法,但是一般都是用一个标准的方法了,下面来看看。 OBJECTIVE-C ...
  • iOS- 单利了解

    2016-08-30 11:04:22
    因此,首先你可能需要确定你是真的需要一个单例类,还是说仅仅是需要一个方便调用的实例化方法。如果你是真的需要一个单例类,那么你就应该确保这个单例类,有且仅有一个实例(不管怎么操作都只能获取到这个实例)。...
  • IOS面试知识点-swift

    2020-07-08 21:56:36
    IOS面试题-SwiftSwift的优点:SwiftOC的相互调用?类(Class)和结构体(struct有什么区别)?class和struct比较,优缺点?struct的优势Swift中什么可选型(Optional)Swift,什么是泛型?访问关键字 open、public...
  • 1.前言 开发iOS应用,解决Crash问题始终是一个难题。Crash分为两种,一种是由EXC_BAD_ACCESS引起的,原因是访问了不属于本进程的内存地址,有可能是访问已被释放的内存;另一种是未被捕获的Objective-C异常...
  • 1.页面的切换方法 1)使用UINavigationController(push,pop) 2)使用视图控制器自身的一对方法(模态) 2.模态//推出新的页面 [self presentViewController:addContactNC animated:YES completion:nil];...
  • -》由于我们使用的是OC的Xmpp框架,再进行Swift开发时需要进行桥接。 具体方法就是创建一个基于c的.h的头文件,然后将我们需要编译OC的语言的头文件包含这个.h文件中; -》然后导入如下库文件,在头头文件...
  • swift 初级语法

    2017-09-18 19:11:11
    一、 变量初始化 普通变量 let a: NSInteger = 0 // let / var 可变/不可变, a 名字,NSInteger 类型 私有属性private var a: NSDate = NSDate() 在var或者let前面加private * 1.... var optionTitleStr : [Str
  • 在前面:对于移动端开发来说,无论iOS,Android,抑或是H5开发,所谓的开发核心之一就是从服务端接收数据,前端负责展示,所以,当然还有各种逻辑的实现,但是呢,一个完善的APP肯定是少不了与服务端交互的,所以一个网络请求...
  • 单例模式是iOS开发中常用的一种设计模式,目的在于创建一次对象,多地方使用。系统中的单例例如:UIApplication、 NSUserDefaults 等,开发中我们可以用作用户管理。Objective-C 单例定义单例的定义方式有大概三种,...
  • 元组是在swift中特有的一种数据结构,它可以储存任意类型的值,是一种很轻量的结构使用起来非常方便轻巧 枚举 swift中的枚举值由hash表的方式存放的,如果不明确的指定.它也不会被隐式转换为一系列的Int值 结构体 ...
  • iOS数据持久化-OC

    2019-07-30 06:57:15
    沙盒详解 1、IOS沙盒机制 IOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本...
1 2 3
收藏数 44
精华内容 17
关键字:

oc怎么调用swift写的单利