内存地址获取代码
func printAddress(values:AnyObject...){
for value in values {
print(Unmanaged.passUnretained(value).toOpaque())
}
print("+++++++++++++++++")
}
打印指针地址
let tt = {}
withUnsafePointer(to: &tt) {print($0)}
func test(a: UnsafePointer<String>) {
let b = UnsafeRawPointer(a)
print("pointer::\(a)")
let t = b.load(as: String.self)
print("value::" + t)
}
func address(o: UnsafeRawPointer) -> String {
return String.init(format: "%018p", Int(bitPattern: o))
}
引用计数探索
class Student: NSObject {
var name = "abc"
func test() {
let block = { [weak self] in
guard let `self` = self else {
return
}
self.name = "nnnn"
self.name = "mmm"
self.name = "mmm"
print(CFGetRetainCount(self))
}
block()
}
deinit {
print("deinit:\(CFGetRetainCount(self))")
}
}
func test() {
let user1 = Student()
user1.test()
}
test()
//第一种方式,KVC
[obj valueForKey:@"retainCount"]
//第二种方式,runTime
OBJC_EXTERN int _objc_rootRetainCount(id);
_objc_rootRetainCount(obj)
//第三种方式
CFGetRetainCount((__bridge CFTypeRef)(obj))
您的一举一动都是对我的莫大支持
友情链接