好久不用论坛,前些天偶然想起登录一下CocoaChina, 发现自己曾经讨论过的一些问题还保留着,觉得有点用处,就收藏下来,以备日后查看。
一、关于Objective-C语法
@synthesize networkStream = _networkStream;
@synthesize fileStream = _fileStream;
@synthesize bufferOffset = _bufferOffset;
@synthesize bufferLimit = _bufferLimit;
_networkStream是class内部变量名
networkStream是property名字。
@synthesize networkStream = _networkStream; 代表property networkStream存取_networkStream
二、UI方面的问题
ActionSheet动态添加button
我想要动态添加按钮,想到两个方法。方法一:用一个数组保存要添加的按钮的标题,然后在actionsheet的初始化时作为otherButtonTitles的值传入,但是这个方法编译时会警告说otherBUttonTitles的参数必须是NSString类型,而不能是数组。
NSMutableArray *arrayDistricts= [NSMutableArray array];
for (int i=0; i<[districtDownloader.districts count]; i++) {
NSString *district=[[districtDownloader.districts objectAtIndex:i] district_desc];
[arrayDistricts addObject: district];
}
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil//@"Are U sure to Play?"
delegate:self
cancelButtonTitle:nil
destructiveButtonTitle:nil
otherButtonTitles:arrayDistricts];
方法二:先用nil作为otherButtonTitles的值初始化actionsheet,然后对actionsheet用addButtonWithTitel方法,加入按钮,这样是出来了按钮,但是最后一个按钮点击没有反应。
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil//@"Are U sure to Play?"
delegate:self
cancelButtonTitle:nil
destructiveButtonTitle:nil
otherButtonTitles:nil];
for (int i=0; i<[districtDownloader.districts count]; i++) {
NSString *district=[[districtDownloader.districts objectAtIndex:i] district_desc];
[actionSheet addButtonWithTitle: district];
[district release];
}
[actionSheet addButtonWithTitle:@"Cancel"];
actionSheet.cancelButtonIndex= [districtDownloader.districts count];
请问如果要让最后一个按钮能够点击,有什么解决的办法?
-----------------------------
1楼回复:
最后一个title加一个nil 试下 。
3楼回复:
最后那个按钮是被你的TabBar挡住了,需要显示actionsheet的时候这样写。
|
三、网络请求的问题
怎么修改 User-Agent里面的内容?
我看到网上有两种种方法 ,一种是
http://stackoverflow.com/questions/478387/change-user-agent-in-uiwebview-iphone-sdk
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)req navigationType:(UIWebViewNavigationType)navigationType {
NSMutableURLRequest *request = (NSMutableURLRequest *)req;
if ([request respondsToSelector:@selector(setValue:forHTTPHeaderField:)]) {
[request setValue:[NSString stringWithFormat:@"%@ Safari/528.16", [request valueForHTTPHeaderField:@"User-Agent"]] forHTTPHeaderField:@"User_Agent"];
}
return YES;
}
另一种是调用私有API
http://blog.sina.com.cn/s/blog_661314940100muz9.html
NSString *userAgent = @"Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_1 like Mac OS X;ja-jp) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F136 Safari/525.20";
id webDocumentView;
id webView;
webDocumentView = objc_msgSend(myWebView, @selector(_documentView));
object_getInstanceVariable(webDocumentView, "_webView", (void**)&webView);
objc_msgSend(webView, @selector(setCustomUserAgent:), userAgent);
但是貌似两种方法都不起作用,不论在iphone上怎么修改,服务器端读到的User-Agent总是默认的值
如果读取是用User-Agent,写入是User_Agnet的话,好像也不起作用。
------------------------------无耻的分割线-----------------------------
1楼回复:
试试这个
http://www.icab.de/blog/2010/04/07/changing-the-headers-for-uiwebkit-http-requests/
四、部署程序的一些问题
安装失败提示“资源已被更改”?
http://www.cocoachina.com/bbs/read.php?tid=31003
前些天给客户编译安装成功的程序,真今天却安装不上了,真是奇怪。 上一次跟这一次唯一不同的就是我换了一台电脑编译,不过 我也重新申请了Key,并重新下载了许可证和provisonfile,,Project Setting里面的Any Iphone OS Device 选项也重新设过了,按道理应该没问题,不知到是哪里出了错 。 这是客户在iTunes上的截图
他删除了程序再重新安装也是一样,不知到还有哪一步漏了?
我的解决办法是把.app用优盘拷到windows下面,由windows压缩成RAR,然后网上传输这个RAR,远端也是windows,就能用itune同步了。
五、关于应用的发布
iOS开发者企业项目可以发布在App Store上吗?
The Enterprise Program only allows for the development of in-house applications for use by your company's employees. If you are interested in developing an application for the App Store, you will need to enroll in the Standard Program.
好像是说不可以, 那么如果我注册为Standard Program,要怎么样才能限制用户必须为企业的人员呢?可不可以通过配置文件来限定?
关于ipad企业应用安全性方面的问题
现在有个项目,是企业要用ipad做办公,大概有200多台吧,主要是安全性方面有比较严格的要求,我想问一下有没有做过企业办公这一块的同行,给点意见或者建议,问题如下:
1. ipad丢失以后能否通过远程控制来锁屏或者清除数据?
据我了解,ipad是有远程控制的功能的,苹果官方叫Mobile Device Management, 但需要第三方的应用来支撑,苹果没有透露相关的API或文档,估计自己实现起来难度相当大。 我了解到微软的Exchange是可以远程擦除ipad上的数据的,我也试验成功过,是在客户那里试验的,大概从发出命令到手机端接收并擦除要3~5分钟吧。有一种方法可以在一定程度上减少风险, 就是通过配置文件设置自动锁屏的时间,比如1分钟,当超过1分钟没有任何操作时,设备自动锁屏,这样就保证了安全,但也并非万无一失。我是想问有没有什么办法可以拿到苹果的MDM的API或者MDM协议的内容?
2. ipad上的邮箱能不能自动注销帐户或者清空邮件?
据我所知现在邮箱是不能自动注销的,而且也不会自动清空邮件,必须得手动在设置里面把帐户给删除了,这对于安全性方面要求比较高的企业来说是很不利的,如果ipad丢失了,那邮件全部都会泄漏。那么如何才能保证邮箱的安全呢? 是不是要自己做一个邮件客户端?如果是,应该采用哪种协议?