oc专题

OC 中的*前const与*后const

int const *p2; int *const p3; 这个什么不能改由const后面的内容决定,如果是*p的话,则*p不可以改。 也就是说p指向的内容不能改变 如果const后面是p的话,则p不能改,也就是说p的指向不可以改变 OC中的字符串的话 NSString* name=@"wangning"; 此时我们不想让外界改变name的值得话const应该加在 NS

OC和 C语言中的const

const与宏对比 1.都是在其他的地方不可以改变 2.一个地方改了其他的地方都会改变。 而且宏定义的缺陷是, 是它会不断的开辟临时变量的存储空间 使用const的话 是都去使用同一的一份空间,使用同一个对象。 加const 之后变量还是全局的,只不过变为全局常量。 如果此时改变量不想被被类外面访问的话,可以加上static关键字, 3.下次想要定义一些宏的时候分

OC 中的深拷贝和浅拷贝

1.指针地址拷贝,浅拷贝,拷贝的只是指针地址,一旦我通过这个地址修改了值,那么原来的内存保存的值也会变化 2.mutablecopy  深拷贝,产生新对象 copy与mutablecopy区别在于返回的值,copy返回不可变对象,mutableCopy返回可以变化的值

OC中的static关键字

1.修饰局部变量      1.只会初始化一次      2.全局只会存在一份内存      3.不会改变自身的作用域,比如原来是局部变量现在的话依然是局部变量      4.生命周期延长(直到程序结束,这个局部变量才会被销毁)      2.  修饰全局变量     static 修饰的全局变量 在整个工程 中只会存在一份     只可以在当前的.h .m文件中才可以访问。 如果单纯全局变量的

iOS OC底层面试题(KVO (Key-value observing))

KVO (Key-value observing) KVO是观察者模式的另一实现。 使用了isa混写(isa-swizzling)来实现KVO 使用setter方法改变值KVO会生效,使用setValue:forKey即KVC改变值KVO也会生效,因为KVC会去调用setter方法 - (void)setValue:(id)value{[self willChangeValueForKey

iOS OC底层面试题(KVC(Key-value coding)

KVC(Key-value coding) -(id)valueForKey:(NSString *)key;-(void)setValue:(id)value forKey:(NSString *)key; KVC就是指iOS的开发中,可以允许开发者通过Key名直接访问对象的属性,或者给对象的属性赋值。而不需要调用明确的存取方法。这样就可以在运行时动态地访问和修改对象的属性。而不是在编译时

oc学习笔记2—— 点语法 @property @synthesize

先来几段代码,Dog类的.h .m文件 和main.m dog.h #import <Foundation/Foundation.h>@interface Dog : NSObject{int _ID;NSString *_name;int _age;float _price;}//凡是用initXXX开头的都是构造函数//init方法实际上没有什么特别的,只是遵循命名约定的普通方

oc学习笔记1——self,super

self: self和java中的this,比较类似,但oc中的self比java中的this要强大。 1.self在对象方法(以-(减号)开头的方法)中,表示当前的实例对象。 2.self在类方法(以+(加号)开头的方法中),表示当前类 super: 调用当前方法的父类方法(类方法或对象方法), 使用的场景:子类只是想覆盖父类中的某个方法,并且只是对父类方法的拓展,在父类

(OC) interface

类接口的语法: @inteface ClassName : SuperClassName//属性和方法的声明@end 类接口的声明以@interface指令开头,后跟类的名称,以@end指令结束。 示例: #import <Foundation/Foundation.h>@interface Test : NSObject@property (readonly) NSUInteger

(OC)入门

1、Objective-C开发环境由以下四部分组成: Objective-C编程语言; Objective-C运行环境;软件库;软件开发环境;  2、选择Objective-C的原因 面向对象的编程功能:Objective-C编程语言为面向对象的程序设计(OOP)提供了全面的支持,其中包括对象消息、封装、继承、多态和开放式递归等功能。对象消息传递:动态的运行时环境; 内存管理; 内部检查和获

OC中的extern,static,const

OC中的extern,static,const **const的作用**: const仅仅用来修饰右边的变量(基本数据变量p,指针变量*p)。 被const修饰的变量是只读的。 **static的作用:** 修饰局部变量:1.延长局部变量的生命周期,程序结束才会销毁。 2.局部变量只会生成一份内存,只会初始化一次。 3.改变局部变量的作用域。 修饰全局变量 1.只能在本文件中访问,

oc中Class是个啥

先来看看熟悉的NSObject是个啥吧 @interface NSObject <NSObject> {Class isa OBJC_ISA_AVAILABILITY;} Class是个啥 typedef struct objc_class *Class; objc_class是什么呢 struct objc_class {Class isa OBJC_ISA_AVAILAB

oc的消息传递机制与消息转发机制

消息传递机制: 在OC中,方法的调用不再理解为对象调用其方法,而是要理解成对象接收消息,消息的发送采用‘动态绑定’机制,具体会调用哪个方法直到运行时才能确定,确定后才会去执行绑定的代码。方法的调用实际就是告诉对象要干什么,给对象(的指针)传送一个消息,对象为接收者(receiver),调用的方法及其参数即消息(message),给一个对象传消息表达为:[receiver message

OC中用字典创建一个具有省市区的应用(简单的字典运用代码)

</pre><pre name="code" class="objc">#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {// 准备工作NSString *path = @"/Users/dllo/Desktop/area.txt";// 根据路径产生相应的字符串NSString *str =[NS

OC中的数组

数组对象 OC的数组里面存放的一定都是对象 数组也分为两种:可变数组与不可变数组 不可变数组 创建不可变数组 1.用便利构造器的方式创建一个空数组 NSArray *arr = [NSArray array]; 2.字面量方法创建 NSArray *arr = @[@"1",@"2",@"3",@"4",@"5"]; 用count可以统计出数组里的元素个数 取值也是通过下标来

OC与Java、C++ 对比

很多想开发iOS,或者正在开发iOS的程序员以前都做过Java或者C++,当第一次看到Objective-C的代码时都会头疼,Objective-C的代码在语法上和Java, C++有着很大的区别,有的同学会感觉像是看天书一样。不过,语言都是相通的,有很多共性。下面列出Objective-C语言的语法和Java,C++的对比,这样你就会很容易Objective-C的语法是怎么回事了。 先目睹

关于oc中出现的typedef的用法/定义函数指针

typedef int (^calculateBlock)(int a,int b); 这里面typedef的作用只是给 calculateBlock取了一个 别名,说明以后可以直接使用。 calculateBlock类似于*所以可以有类似的用法,以后可以直接使用calculateBlock来定义方法。例: - (int)calculateWithNumber1:(int)number1

oc库函数

// 获取所有加载的Objective-C框架和动态库的名称 -(id)getAllLibrares {     NSMutableArray * arr =[[NSMutableArrayalloc]init];     u_int count;     const char ** a=objc_copyImageNames (&count);

「OC」UI练习(二)——照片墙

「OC」UI练习——照片墙 文章目录 「OC」UI练习——照片墙UITapGestureRecognizer介绍照片墙实现 UITapGestureRecognizer介绍 UITapGestureRecognizer是UIKit框架中的一个手势识别器类,用于检测用户在视图上的轻击手势。它是UIGestureRecognizer的一个子类,可以通过将它添加到视图上来监听并响应

使用JSPatch时,OC转JS语法注意

OC常量替换 各种参数常量 使用JSCovertor工具 OC转JS时,有些语法错误需要改,比如获取window时需要 var window = UIApplication.sharedApplication().delegate().window(); 一定注意⚠️ JSCovertor 转化时缺少delegate 对于使用NSTimer时,获取时间戳,使用Math.floor()函数

「OC」UI练习(一)—— 登陆界面

「OC」登陆界面 明确要求 一个登陆界面的组成,用户名提示以及输入框,密码提示提示以及输入框,登陆按钮,以及注册按钮,根据以上要求我们将我们的组件设置为成员变量。 //viewControl.h#import <UIKit/UIKit.h>@interface ViewController : UIViewController@property (nonatomic) UILabel *l

oc中类都是在main执行前,加载到内存中的,正确吗?

oc中类加载   在Objective-C中,类是在程序运行时(runtime)加载到内存中的,而不是在main函数执行前。 在Objective-C中,类的加载是由运行时系统负责的。当程序启动时,Objective-C运行时系统会自动加载所有的类,并创建类的元数据。这个过程发生在main函数执行之前。 Objective-C运行时系统会遍历应用程序的可执行文件(executable fil

k8s 创建job 执行oc命令 删除/操作宿主机内pod

制作job 所使用的的容器 Dockerfile FROM xxx.xxx.com/alpine:3.9COPY glibd-2.23-r3.apk /opt/glibd-2.23-r3.apkCOPY ./ssh_config /etc/ssh/COPY clock /etc/sysconfig/clockRUN echo "xxx.xxx.com/alpine/v3.9/main" >

OC解析XML文件

1系统解析方法 2第三方解析方法(ios9.0 不支持HTTP协议需要在info.plist加NSAppTransportSecurity 类型字典  NSAllowsArbitraryLoads类型 bool 设为YES) 1.1系统解析方法(需要先设置代理 NSXMLParserDelegate ) //获取路径     NSString *path = [[NSBundlemai

OC的DES加密,使与java的Cipher类用DES/CBC/PKCS5Padding方式的加密结果相同

问题说明: 最近用到DES加密,并且要与java的Cipher类加密的结果保持一致。没研究过java的Cliper,但工作中Cipher根据DES/CBC/PKCS5Padding加密方式生成了一个字符串。比较后发现,此字符串与将OC加密生成的NSData直接用字符串格式化([NSString stringWithFormat:@"%@",data])相同。所以就先这么用了。 代码如下:

stm32 定时器输出比较(OC)与PWM的理解和应用

不积跬步,无以至千里;不积小流,无以成江海。大家好,我是闲鹤,公众号 xxh_zone,十多年开发、架构经验,先后在华为、迅雷服役过,也在高校从事教学3年;目前已创业了7年多,主要从事物联网/车联网相关领域和业务。喜欢交友、骑行、写毛笔字、弹吉他、折腾硬件和写代码。 相关阅读: STM32 外部中断的理解STM32 定时器中断 1. 定时器TIM简介 TIM 是 stm32 微控制器