String strVal = (String)obj1; //Cannot cast from Integer to String 1. 2. 因为obj1 在创建的时候就是 Integer 类型,不能转换成 String 类型,所以在编译期间就会报错Cannot cast from Integer to String。 例二: Object obj2 = new Integer(100); String strVal = (String)obj2; 1. 2. obj2 虽然...
@interface ExampleOCClass : NSObject// 没有指定标识符,且没有被NS_ASSUME_NONNULL_BEGIN和NS_ASSUME_NONNULL_END包裹,标识符默认为null_unspecified+ (ExampleOCClass *)getExampleObject;@end@implementation ExampleOCClass+ (ExampleOCClass *)getExampleObject { return nil; // OC代码直接返回nil}@end ...
/* 3: Any 和 AnyObject 的类型转换 */ var things = [Any]() things.append(0) things.append(0.0) things.append(42) things.append(3.14159) things.append("hello") things.append((3.0, 5.0)) things.append(Movie(name: "Ghostbusters", director: "Ivan Reitman")) things.append({ (name: St...
guard let data=try? JSONSerialization.data(withJSONObject: self, options: [])else{returnnil } guard letstring= String(data: data, encoding: .utf8)else{returnnil }returnstring} } extension String {publicfunc toDictionary() ->[String : Any] {varresult =[String : Any]() guard!self.isEmp...
可以定义由类专属协议,只需要继承自AnyObject 协议可以合成 协议也可以扩展 3. 协议中方法的调用 举个例子,在数学中我们会求某个图形的面积,但是不同形状求面积的公式是不一样的,如果用代码来实现可以怎么来实现呢? 首先我们可以通过继承父类的方法来实现,但是在这里我们就可以使用协议来实现: ...
/// 封装 AFN 的 GET/POST 请求/// - Parameters:/// - method: GET/POST/// - URLString: URLString/// - parameters: parameters/// - completion: 完成回调(json, isSuccess)funcrequest(method:HQHTTPMethod=.GET,URLString:String,parameters:[String:AnyObject]?,completion:@escaping(_ json:Any?
通过使用精确类型,例如UUID替代String(UUID字节长度固定128字节,而不是String任意长度),这样就可以进行内存内联,在栈内存储UUID,我们知道,栈内存管理更快更安全,并且不需要引用计数。 Enum替代String,在栈内管理内存,无引用计数,并且从语法上对于开发者更友好。
@interfaceClassA:NSObject@property(nonatomic,strong)NSString*name; - (void)sayHello;@end 通过preprocess 可以看到代码大致如下,这里为了方便展示,将无用代码进行了删除。这里记得要将 Build Setting 中 Packaging 的Define Module设置为 NO,因为其默认值为 YES,而这会导致我们开启 Clang Module 特性。
let str0 = str as String 创建空字符串 let str1: String = “” let str1: String = String() Object - C var mutable = NSMutableString.init(capacity:0)// 可变字符串 创建赋初值的字符串 let str2 = “你好啊”//不可变字符串(常量字符串) ...
case name(String) case num(Int) } 减少var属性 使用计算属性 使用计算属性可以减少多个变量同步带来的潜在 bug。 不推荐 class model { var data: Object? var loaded: Bool } model.data = Object() loaded = false 推荐 class model { var data: Object?