wordpress
2024年 4月 21日
2024年 4月 21日
为什么编译ObjC代码需要加-fconstant-string-class=NSConstantString选项?
如果使用GNUStep编译ObjC,一个经常遇到的选项是-fconstant-string-class. 它的作用是指定常量字符串所使用的class类型。为什么常量字符串要指定类?正常GCC解析C/C...
2024年 4月 21日
NSString *s = @"hello"变量s是不可变的吗?
先说结论,s指针是可变的,可指向其他对象,但@"hello"字符串字符本身不可变。编程语言设计的不可变字符串是指对应的字符串不可被修改,可以共用、优化处理。但它返回给一个指针保存,此指针本身所指向地址...
2024年 4月 21日
ObjC和C/C++代码转换
clang编译器提供一个编译选项-rewrite-objc,可以将.m文件转换成对应的C/C++文件,可以更清晰了解ObjC对应的C/C++代码是什么模样。 注意,这并不意味着clang编译.m文件是...
2024年 4月 21日
构建无比简洁的clang编译ObjC环境
在编译ObjC代码的更简洁方法有提到,可以用更简洁的命令行在Ubuntu 22.04下编译ObjC环境,其实还可以更简洁,如下我们将构造一个clang-objc软链接,可以直接使用clang-objc...
2024年 4月 21日
编译ObjC代码的更简洁方法
如果是Xcode环境,IDE有配置好ObjC编译所需的必要头文件、库和必要的编译选项,很轻松直接点构建即可。如果是在Linux或Windows环境,需要手动做这些配置,参考:如何构建ObjC语言编译环...
2024年 4月 21日
Foundation.framework的底层实现?
Cocoa框架的XX类库底层可能会利用Core XX来实现。比如Foundation.framework底层依赖CoreFoundation.framework的实现,简称CF框架,它提供了C语言接口...
2024年 4月 21日
ObjC NSString字符串常量编码格式是编译器决定还是ObjC语言规范决定?
如下为例,NSString *s = @"a我a",以GNUStep GCC编译器为参考,用默认UTF-8源代码编码格式,字符串s是UTF-8编码。gcc编译器增加-fexec-charset=GB2...