相关疑难解决方法(0)

Swift是否支持面向方面的编程?

我是一个iOS开发人员,试图学习面向方面的编程,但是Swift支持面向方面的编程吗?

ios swift

16
推荐指数
2
解决办法
6163
查看次数

Swift isa指针重映射或其他支持的方法调配

Swift类是否具有可以重新映射的isa指针?

我们已经看到Swift 使用比Objective-C 更静态的方法调度,它(除非来自Foundation/NSObject的类设备)在运行时基于重映射方法实现防止了调配风格.

我想知道我们将如何实现基于方法拦截的动态功能,如观察者模式,通知等?目前所有这些东西都是由Objective-C层提供的,可以很容易地集成到Swift中.但是,如果我们想在我们自己的框架(或应用程序)中提供这些类型的功能,是否有必要在Objective-C中实现它们?我认为有一种方法可以"原生"地完成它.

另一种对Objective-C来说很常见的混合是重新映射isa-pointer来动态生成一个子类.Swift是否支持这种调配?如果没有什么拦截任意的方法调用的支持呢?

编辑: 正如@jatoben指出的那样,从arm64开始重新映射必须通过调用object_setClass()而不是直接访问该值来完成.这仍然被称为'isa指针调配'

objective-c objective-c-runtime swift

12
推荐指数
1
解决办法
3068
查看次数

Swift 3:是否继承NSObject?

我看过一些帖子像这样一个关于子类之间的差别NSObject在斯威夫特或者只是有其天然的基础class,没有子类.但他们都有点旧帖,我不清楚这个话题.

NSObject什么时候应该继承?子类化和非子类化之间的实际区别是什么?目前Swift的推荐是什么?

inheritance class subclass nsobject swift

11
推荐指数
1
解决办法
1万
查看次数

有人可以解释类和NSObjectProtocol之间的区别

基本上我想知道这之间的区别

protocol ViewDelegate: class { 
  func someFunc()
}
Run Code Online (Sandbox Code Playgroud)

和这个

protocol ViewDelegate: NSObjectProtocol { 
  func someFunc()
}
Run Code Online (Sandbox Code Playgroud)

有什么区别吗??

swift

7
推荐指数
1
解决办法
889
查看次数

在swift NSObject子类中使用CoreFoundation对象时出现运行时错误

这是一个非常简单的类(子类NSObject),它保存一个CGPath对象列表并将一个附加CGPath到数组上init:

import Foundation
class MyClass: NSObject {

    var list = [CGPath]();

    init() {
        list.append(CGPathCreateMutable());
    }
}
Run Code Online (Sandbox Code Playgroud)

尝试使用此类时:

var instance = MyClass();
println(instance.list.count); // runtime error after adding this line
Run Code Online (Sandbox Code Playgroud)

产生一个丑陋的崩溃:

Playground execution failed: error: Execution was interrupted, reason: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0).
The process has been left at the point where it was interrupted, use "thread return -x" to return to the state before expression evaluation.
* thread #1: tid = 0x1251d1, 0x00000001064ce069 …
Run Code Online (Sandbox Code Playgroud)

arrays nsobject ios swift

6
推荐指数
1
解决办法
2387
查看次数

我应该从Swift的NSObject继承吗?

我在这里找到了很好的讨论,但还有一个问题:

我知道通过NSObject的Objective-C实现引用计数器。如果NSObject不是基类,是否仍支持ARC?

ios automatic-ref-counting swift

4
推荐指数
1
解决办法
1130
查看次数