① 有没有好的工程管理app推荐
智建云工程管理APP是国内最早最成熟,专注于工程现场的移动管理App,主要应用在工程建造过程中的质量控制,支持多种专业和多种业态。工程管理App能够提供更加高效、便捷、标准化的工作项和指导手册,让工作更加规范和统一,管理层可以实时查看查验进度和问题分析,减免了繁琐的汇报,让所有问题有迹可循,便于追溯,最终实现质量提升、降低沟通和返工成本。
② 移动互联应用开发是什么专业
1.移动互联应用开发专业是以培养iOS、Android开发技术为基础,在互联网、信息、金融、传媒等各个领域,从事移动智能设备软件的设计、开发、测试、维护、运营、管理等相关工作的高素质应用型技术人才。
2.主要学习的课程有C程序设计、数据结构、linux网络解析、Java程序设计、数据库应用、JavaEE基础技术、 软件工程与UML、Android应用开发、移动游戏开发基础、Object-C应用开发、Cocos2D引擎应用、iOS项目实战、移动技术高级应用开发等。
(2)ios工程管理扩展阅读
移动互联网应用缤纷多彩,娱乐、商务、信息服务等各种各样应用开始渗入人们的基本生活。手机电视、视频通话、手机音乐下载、手机游戏、手机IM、移动搜索、移动支付等移动数据业务开始带给用户新的体验。
目前以移动游戏、移动音乐等娱乐型业务为主。贝叶思调研数据表明,手机游戏市场吸引了越来越多的用户参与,其收入比重达到29.7%,其次为移动音乐,占据27.4%的市场份额;接下来依次为移动IM、手机视频、移动广告、移动搜索以及移动支付。
近年来,手机游戏一直是投资者关注的重点领域,同时也是移动互联网产业中发展最早也最为成熟的一块领域,用户习惯逐年养成,但在产品种类、创意开发以及运营模式上仍存在一定欠缺,因此这一市场仍存在巨大发展潜力。3G商用后,网络和终端提升加快,加上两网融合的趋势,内容服务逐步丰富。
③ ios 在哪里设置工程支持arc与否
旧工程配置arc方案:
1,直接在targets->build phases中修改compiler Flags,是否支持arc。添加:-fobjc-arc,就可以让旧项目支持arc。如果想让原来支持arc的不使用arc则添加-fno-objc-arc
2,因为在build phases中可以改变是否支持arc,所以应该在代码中添加判断是否支持arc,这样不管以后.m的arc是否改变,都不用再次调整代码。
下面是一个.h文件(附件中也上传了.h),整合了arc的各种属性、release判断,直接#import在你想使用arc的类中即可。
#ifndef paixiu_PXISARC_h
#define paixiu_PXISARC_h
#ifndef PX_STRONG
#if __has_feature(objc_arc)
#define PX_STRONG strong
#else
#define PX_STRONG retain
#endif
#endif
#ifndef PX_WEAK
#if __has_feature(objc_arc_weak)
#define PX_WEAK weak
#elif __has_feature(objc_arc)
#define PX_WEAK unsafe_unretained
#else
#define PX_WEAK assign
#endif
#endif
#if __has_feature(objc_arc)
#define PX_AUTORELEASE(expression) expression
#define PX_RELEASE(expression) expression
#define PX_RETAIN(expression) expression
#else
#define PX_AUTORELEASE(expression) [expression autorelease]
#define PX_RELEASE(expression) [expression release]
#define PX_RETAIN(expression) [expression retain]
#endif
#endif
说明:在arc中,strong对应原来的retain与,weak对应原来的assign。
EX:举例使用autorelease:
NSArray *testArray = PX_AUTORELEASE([[NSArray alloc] init]);
//如果支持arc,testArray就只是alloc init,release的事情由系统来做。
//如果不支持arc,那这条语句相当于:
NSArray *testArray = [[[NSArray alloc] init] autorelease];
这样不管以后改不改arc,都不会内存泄漏了 .
所以,arc的使用有两点:
A:在build phases中修改compiler Flags值。
B:在代码中判断是否支持arc,包括对属性(property)、释放(release)的判断。
3,在dealloc中需要这样做:
类如果注册了通知(观察者模式),需要remove掉。这个不管是否支持arc,都必须要做的。
- (void)dealloc {
[[] removeObserver:self];//如果注册了通知的话。
[self removeObserver:self forKeyPath:keyPath];//如果注册了kvo的话。
#if !__has_feature(objc_arc) //在这里也需要判断是否支持arc,支持的话就执行旧工程中该release的语句.
[array release]; //array代表alloc但没有autorelease的变量
[super dealloc];
#endif
}
4,另外加点block的判断,这个是在4.0以后有的,当然也可以不进行判断,因为现在大多数都4.0以后了。
#if NS_BLOCKS_AVAILABLE
#endif总结:
1,arc的设置是在build phases中修改compiler Flags的值。
2,如果使用了arc,在你的代码中不可以使用retain, release, autorelease,如果使用的话会报错。
3,如果使用了arc,在@property声明中,用strong和weak代替相应的retain, ,和assign。
4,如果使用了arc,NSAutoReleasePool也不能使用,测试发现,用@autoreleasepool 代替,不会编译报错。总之,一切你之前“背过”的那几条内存管理规则,你都不用去管了。而且,个人感觉,用arc代码清晰很多,而且效率也提高了些。
转载
④ iOS 如何将整个APP工程打包成静态库
iOS是由苹果公司为iPhone开发的操作系统。它主要是给iPhone、iPod touch以及iPad使用。就像其基于的Mac OS X操作系统一样,它也是以Darwin为基础的。原本这个系统名为iPhone OS,直到2010年6月7日WWDC大会上宣布改名为iOS。iOS的系统架构分为四个层次:核心操作系统层,核心服务层,媒体层,可轻触层。系统操作占用大概240MB的存储器空间。
⑤ 知乎上的一个怎么面试iOS工程师的问题
1.什么是arc?(arc是为了解决什么问题诞生的?)
首先解释ARC: automatic reference counting自动引用计数。
ARC几个要点:
在对象被创建时 retain count +1,在对象被release时 retain count -1.当retain count 为0 时,销毁对象。
程序中加入autoreleasepool的对象会由系统自动加上autorelease方法,如果该对象引用计数为0,则销毁。
那么ARC是为了解决什么问题诞生的呢?这个得追溯到MRC手动内存管理时代说起。
MRC下内存管理的缺点:
1.当我们要释放一个堆内存时,首先要确定指向这个堆空间的指针都被release了。(避免提前释放)
2.释放指针指向的堆空间,首先要确定哪些指针指向同一个堆,这些指针只能释放一次。(MRC下即谁创建,谁释放,避免重复释放)
3.模块化操作时,对象可能被多个模块创建和使用,不能确定最后由谁去释放。
4.多线程操作时,不确定哪个线程最后使用完毕
2.请解释以下keywords的区别: assign vs weak, __block vs __weak
assign适用于基本数据类型,weak是适用于NSObject对象,并且是一个弱引用。
assign其实也可以用来修饰对象,那么我们为什么不用它呢?因为被assign修饰的对象在释放之后,指针的地址还是存在的,也就是说指针并没有被置为nil。如果在后续的内存分配中,刚好分到了这块地址,程序就会崩溃掉。
而weak修饰的对象在释放之后,指针地址会被置为nil。所以现在一般弱引用就是用weak。
首先__block是用来修饰一个变量,这个变量就可以在block中被修改(参考block实现原理)
__block:使用__block修饰的变量在block代码快中会被retain(ARC下,MRC下不会retain)
__weak:使用__weak修饰的变量不会在block代码块中被retain
同时,在ARC下,要避免block出现循环引用 __weak typedof(self)weakSelf = self;
3.__block在arc和非arc下含义一样吗?
是不一样的。
在MRC中__block variable在block中使用是不会retain的
但是ARC中__block则是会Retain的。
取而代之的是用__weak或是__unsafe_unretained来更精确的描述weak reference的目的
其中前者只能在iOS5之後可以使用,但是比较好 (该物件release之後,此pointer会自动设成nil)
而後者是ARC的环境下为了相容4.x的解决方案。
所以上面的范例中
__block MyClass* temp = …; // MRC环境下使用
__weak MyClass* temp = …; // ARC但只支援iOS5.0以上的版本
__unsafe_retained MyClass* temp = …; //ARC且可以相容4.x以後的版本
4.使用nonatomic一定是线程安全的吗?()
不是的。
atomic原子操作,系统会为setter方法加锁。 具体使用 @synchronized(self){//code }
nonatomic不会为setter方法加锁。
atomic:线程安全,需要消耗大量系统资源来为属性加锁
nonatomic:非线程安全,适合内存较小的移动设备
5.描述一个你遇到过的retain cycle例子。
block中的循环引用:一个viewController
@property (nonatomic,strong)HttpRequestHandler * handler;
@property (nonatomic,strong)NSData *data;
_handler = [httpRequestHandler sharedManager];
[ downloadData:^(id responseData){
_data = responseData;
}];
1
2
3
4
5
6
self 拥有_handler, _handler 拥有block, block拥有self(因为使用了self的_data属性,block会 一份self)
解决方法:
__weak typedof(self)weakSelf = self
[ downloadData:^(id responseData){
weakSelf.data = responseData;
}];
1
2
3
4
6.+(void)load; +(void)initialize;有什么用处?
在Objective-C中,runtime会自动调用每个类的两个方法。+load会在类初始加载时调用,+initialize会在第一次调用类的类方法或实例方法之前被调用。这两个方法是可选的,且只有在实现了它们时才会被调用。
共同点:两个方法都只会被调用一次。
7.为什么其他语言里叫函数调用, objective c里则是给对象发消息(或者谈下对runtime的理解)
先来看看怎么理解发送消息的含义:
曾经觉得Objc特别方便上手,面对着 Cocoa 中大量 API,只知道简单的查文档和调用。还记得初学 Objective-C 时把[receiver message]当成简单的方法调用,而无视了“发送消息”这句话的深刻含义。于是[receiver message]会被编译器转化为:
objc_msgSend(receiver, selector)
如果消息含有参数,则为:
objc_msgSend(receiver, selector, arg1, arg2, ...)
如果消息的接收者能够找到对应的selector,那么就相当于直接执行了接收者这个对象的特定方法;否则,消息要么被转发,或是临时向接收者动态添加这个selector对应的实现内容,要么就干脆玩完崩溃掉。
现在可以看出[receiver message]真的不是一个简简单单的方法调用。因为这只是在编译阶段确定了要向接收者发送message这条消息,而receive将要如何响应这条消息,那就要看运行时发生的情况来决定了。
Objective-C 的 Runtime 铸就了它动态语言的特性,这些深层次的知识虽然平时写代码用的少一些,但是却是每个 Objc 程序员需要了解的。
Objc Runtime使得C具有了面向对象能力,在程序运行时创建,检查,修改类、对象和它们的方法。可以使用runtime的一系列方法实现。
⑥ 苹果工程部解锁一般多久
苹果iPhone被锁,在机主提交资料后,一般在3-7天时间内,官方就可以完成解锁工作。
对于被锁Apple ID 的手机,机主要提供的资料有:
购买发票,上面有对应手机的详细信息,以确认机主是合法购置;
提供购机的原包装,这个包装中的标识必须清晰可见,以进一步确认机主身份合法有效。
以上两个是必须的,缺一不可,所以在购机后,不可以把外包装随便一丢了事。
⑦ 求大神推荐好用的项目管理软件,需要苹果版的!
OmniPlan 3 for Mac(项目流程管理软件)
中文版:网页链接
OmniPlan for mac是Mac OS X平台的上最好用的项目管理软件,提供自定检视表、阶层式的纲要模式、成本追踪、里程碑、任务限制与相关性、资源分配、时程控制、Gantt 图表、违反事项显示、关键路径等等功能。
⑧ 如何面试 iOS 工程师
知乎链接:http://www.hu.com/question/19604641
1.什么是arc?(arc是为了解决什么问题诞生的?)
首先解释ARC: automatic reference counting自动引用计数。
ARC几个要点:
在对象被创建时 retain count +1,在对象被release时 retain count -1.当retain count 为0 时,销毁对象。
程序中加入autoreleasepool的对象会由系统自动加上autorelease方法,如果该对象引用计数为0,则销毁。
那么ARC是为了解决什么问题诞生的呢?这个得追溯到MRC手动内存管理时代说起。
MRC下内存管理的缺点:
1.当我们要释放一个堆内存时,首先要确定指向这个堆空间的指针都被release了。(避免提前释放)
2.释放指针指向的堆空间,首先要确定哪些指针指向同一个堆,这些指针只能释放一次。(MRC下即谁创建,谁释放,避免重复释放)
3.模块化操作时,对象可能被多个模块创建和使用,不能确定最后由谁去释放。
4.多线程操作时,不确定哪个线程最后使用完毕
2.请解释以下keywords的区别: assign vs weak, __block vs __weak
assign适用于基本数据类型,weak是适用于NSObject对象,并且是一个弱引用。
assign其实也可以用来修饰对象,那么我们为什么不用它呢?因为被assign修饰的对象在释放之后,指针的地址还是存在的,也就是说指针并没有被置为nil。如果在后续的内存分配中,刚好分到了这块地址,程序就会崩溃掉。
而weak修饰的对象在释放之后,指针地址会被置为nil。所以现在一般弱引用就是用weak。
首先__block是用来修饰一个变量,这个变量就可以在block中被修改(参考block实现原理)
__block:使用__block修饰的变量在block代码快中会被retain(ARC下,MRC下不会retain)
__weak:使用__weak修饰的变量不会在block代码块中被retain
同时,在ARC下,要避免block出现循环引用 __weak typedof(self)weakSelf = self;
3.__block在arc和非arc下含义一样吗?
是不一样的。
在MRC中__block variable在block中使用是不会retain的
但是ARC中__block则是会Retain的。
取而代之的是用__weak或是__unsafe_unretained来更精确的描述weak reference的目的
其中前者只能在iOS5之後可以使用,但是比较好 (该物件release之後,此pointer会自动设成nil)
而後者是ARC的环境下为了相容4.x的解决方案。