Objective-C或者Obj-C或OC,是根据C语言所衍生出来的语言,继承了C语言的特性,是扩充C的面向对象编程语言。 用于MAC App开发、IOS App开发,主要开发工具是MAC上的XCode IDE。
下面简述一下Object C要点:
@interface MyObject : NSObject
@end
C++中:
class MyObject : public NSObject{
};
备注:类声明以 @interface 类名:继承类 开头,以 @end 结尾,类实现以@implementation 类名 开头,以 @end 结尾
OC中所有对象都是指针的形式。中括号可以认为是如何调用你刚才写的这个方法,通常在Objective-C里说“消息”。
this.hello(true); //C#
[self hello:YES]; //Objective-C
//在Objective-C 2.0引入了属性合成,相当于之前的get/set方法
@property (nonatomic, copy) NSString *caption;
@property (nonatomic, copy) NSString *photographer;
*.h文件
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface BNRImageStore : NSObject
+(instancetype)sharedStore;
@end
*.m 文件
#import "BNRImageStore.h"
#import "BNRItemStore.h"
@interface BNRImageStore ()
@property(nonatomic, strong) NSMutableDictionary *dictionary;
@end
@implementation BNRImageStore
+(instancetype)sharedStore
{
static BNRImageStore* sharedStore = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedStore = [[self alloc]initPrivate];
});
// if (!sharedStore) {
// sharedStore = [[self alloc]initPrivate];
// }
return sharedStore;
}
-(instancetype)init
{
@throw [NSException exceptionWithName:@"Single" reason:@"use + [BNRImageStore sharedStore]" userInfo:nil];
return nil;
}
-(instancetype)initPrivate
{
self = [super init];
if (self) {
self.dictionary = [[NSMutableDictionary alloc]init];
//内存过低警告
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self selector:@selector(clearImages:)
name:UIApplicationDidReceiveMemoryWarningNotification
object:nil];
}
return self;
}
*.m文件和*.mm文件区别
*.m文件是OC编程用的,*.mm文件是混合编程(OC\C++). 例如接入IOS支付的时候,针对一个编译问题:
很可能你是在混编文件(也就是.MM)里调用的CreateRSADataSigner方法
解决办法 就是DataSigner.m和DataVerifiler.m
把这两个类改为MM文件,C++和OC混编。
参考材料:
*《IOS编程--第4版本》, Big Nerd Ranch Guides 的书,一向是很经典的,强烈推荐
* 拿XCode实战写代码,有5年编程经验的,大约写一周,就慢慢就感觉了 -- 精通还得3月,呵呵。
2014.6 Swift横空出世,且apple说2015年,Swift要开源。 故,Object C的未来,不好说。
以苹果的个性,说不定2年后,要求Apple Store上面的应用全部为Swift的,也说不定,呵呵。
我是MetaPad Paper 老用户了,用了2年多。...
一路东北, 转眼二十年了,最后一次回眸长春,是2004...
中年人的生活 各自欢乐, 又或一地鸡毛,简言之:【悲...
2023年,三年疫情过后第一个春天,我开始了骑行: 空...
2024年 甲辰龙年春节假期,我看了2本小说,茅盾文学...
在VR应用中,有一个相对简单的虚拟现实体验,那...
对程序员而言,写的代码用源码管理系统管理起来,非常方便...
上文中,说明了 Squid3 IP Proxy 隐藏原IP,这里就搭建Squid 3密码账号IP代理进行整理,涉及...
不用插件,js脚本显示星号密码
以前,我是用Chrome插件做这个这的--显示星号密码的。 今天,分享一个不用插件...
今天新采购了柒比贰WordPress主题,安装主题时候报错: MySQL命令行使用sql语句进行建表时,MySQL...