(之前我的问题已在此处提出,但我没有找到合适的答案.例如Xcode4 Workspace with Static library project&application project)
我正在尝试使用第三方提供的库.它们提供了构建libLibraryName.a文件的XCode项目.他们建议将项目作为子项目添加到我自己的项目中,然后将产品libLibraryName.a文件添加到我的项目设置"Link Binary with Libraries"中描述的库集.
库正确构建:生成.a文件.但该项目在Products组下显示了一个红色的libLibraryName.a文件.我不能让它变成黑色.父项目说它无法找到LibraryName进行链接.
作为测试,我使用XCode 4静态库模板创建了一个新的静态库项目.该项目表现出相同的行为 - 即使构建了.a文件,产品也不会显示"黑色".(编辑:如果你为设备而不是模拟器构建它会变黑).
我知道XCode 4默认将中间和产品文件放在共享位置.我尝试过这个设置,并且我已经更改了设置,将产品文件放在构建设置中描述的文件夹中.两种设置都不起作用.
人们还建议为设备而不是模拟器构建.我试过这个无济于事.
是什么赋予了?如何获取静态库项目以识别其构建产品的位置,并随后在另一个项目中引用此产品?
我正在使用NSOperationQueue的addOperationWithBlock.从块内,我如何检查是否应该取消操作?或访问任何NSOperation属性/方法?
[myOperationQueue addOperationWithBlock: ^{
while ( /* long running loop */ )
{
// how to determine here if I need to cancel?
// for that matter, access any NSOperation properties/methods?
}
}];
Run Code Online (Sandbox Code Playgroud)
使用NSBlockOperation是更好的方法吗?
我在我的应用程序中使用Facebook SDK for iOS:http: //github.com/facebook/facebook-ios-sdk
oAuth令牌在大约2小时后到期.如何在不必再次调用[Facebook授权...]方法的情况下"刷新"oAuth令牌 - 如果用户之前已登录,则会短暂显示一个空的Facebook对话框?我想避免的是要求用户每次使用应用程序时重新登录FB - 比如说,每天都要.
当应用程序退出/启动时,我已经在保存/恢复oAuth令牌.我可以使用[Facebook isSessionValid]检查令牌是否有效,或者检查令牌上的过期时间.但是如果令牌已经过期该怎么办?我已经读过可以"刷新"令牌,但我不明白这是如何完成的.
我不想请求"offline_access"权限,这将给我一个"永远"的令牌.
救命!?
也许这类似于这个问题,没有回应: loadHTMLString不能使用iOS5?
我有一个UIWebView,我使用loadHTMLString填充:baseURL:.HTML小而简单,它引用了一个css样式表和一个javascript脚本,它们通过baseURL:加载,它被设置为app的bundle内的一个目录.
// load the html
NSString* filePath = [NSString stringWithFormat: @"%@/html", [[NSBundle mainBundle] resourcePath ] ];
[_pCurrentWebView loadHTMLString: html baseURL: [NSURL fileURLWithPath: filePath isDirectory: YES ] ];
Run Code Online (Sandbox Code Playgroud)
这在过去一直很有效,但在iOS5中已经破产了.在iOS5中,UIWebView中不显示任何内容.webview确实提供了所有预期的事件 - 例如,shouldLoadRequest,didStartLoad,didFinishLoad等.
html有一个脚本标记,如下所示:
<script type="text/javascript" src="./myscript.js" />
Run Code Online (Sandbox Code Playgroud)
如果我删除脚本标记,那么页面加载并在iOS5中呈现正常.我可以说,加载并应用了与脚本.js文件引用方式相同的css文件.
如果我保留脚本标记但使myscript.js文件完全为空,则仍然无法加载.
对我来说,这似乎是某种跨站点脚本问题 - 因为WebView认为它应该禁止加载脚本(事实上,不允许渲染页面?)
不知道从哪里开始.想法?
UPDATE
这种感觉越来越像跨站点脚本问题.如果我删除它的标签,虽然没有脚本.我的所有图像都是从baseURL加载的,我的样式表也是如此.也就是说,我们知道baseURL正在运行.
如果我用我的脚本文件的实际内容替换标签然后它工作,所以问题不是脚本本身.
仍在寻找确认和其他想法来规避.我不方便将脚本本身修补到html中,但这是我迄今为止最好的解决方案.或者,我可以将html写入文件系统并通过loadRequest加载,但同样,不是我的第一选择.
更新2
感谢@djromero我有一个解决方案.我的文档是一个XHTML文档,因此使用了一个自动关闭的脚本标记(没有内容,只是属性.)但loadHTMLString:baseURL:显然假设一个MIMEType text/html,UIWebView显然现在更严格地解释 - 并且在text/html文档中你可能没有自我关闭标记.
我的解决方案是切换到loadData:MIMEtype:baseURL:并指定application/xhtml+xml为mime类型.我可以使用我的NSString轻松构造NSData dataUsingEncoding:.
我有一个UIBarButtonItem自UITextField定义视图.工具栏包含此项目和几个按钮.
当工具栏调整大小(比如设备方向更改)时,我希望UITextField增长或缩小(宽度)以占用工具栏中的所有可用空间.
如果没有弄清楚工具栏中所有按钮的组合大小,然后UITextField适当地设置宽度,是否只有一些神奇的方法可以让这个项目像灵活空间条项目一样?
是否可以使用标准的UINavigationController-rooted应用程序,在视图层次结构下方的屏幕底部显示单个ADBannerView?也就是说,如果不修改可以推送到根UINavigationController的每个视图控制器/视图,我可以看到全局ADBannerView吗?
我不确定如何在IB或代码中设置它.救命?
我用模糊的答案看到了类似的问题.我正在寻找一个具体的例子.
似乎我总是和UIAlertView战斗,让它做我想做的事.我已经完成了战斗 - 是否有任何强大的UIAlertView替换具有以下功能,或者我需要自己编写?:
我发现了一些在UIAlertView上实现自定义的博客和stackoverflow帖子 - 这不是我想要的.我也不想要如何实现自定义AlertView的指南 - 我知道如何,我只想找到一个已经社区维护的.我想要一个可以安全地提交App Store并且面向未来的UIAlertView更改的基础更换(是的,我已被烧毁......)
如果您对其他所需功能有任何建议,请回复评论.
我无法在XCode编辑器中使用/**/注释掉并编译以下代码行.我从XPath查询中使用的更复杂的字符串中提取了这个示例:
字符串本身似乎很好:
NSString* s = @"//*//";
Run Code Online (Sandbox Code Playgroud)
不会为我编译:
/*
NSString* s = @"//*//";
*/
Run Code Online (Sandbox Code Playgroud)
XCode 4.4.如果有人能证实我不是傻瓜,我会提交雷达.
编辑:很高兴看到SO语法高亮显示器也出现了这个问题...
编辑:好的,我向Apple提交了一份错误报告.谢谢.
编辑:每个Rob的答案如下,这不是一个错误:)谢谢你的解释,Rob; 现在完全有道理.
我想知道当IAP自动续订订阅自动续订时是否以及何时自动刷新应用收据.文档意味着在购买时更新应用程序收据(续订?)但我在IAP沙箱中没有看到此行为:
有关消耗品和非续订订阅的信息将在付款时添加到收据中,并保留在收据中,直至您完成交易.完成交易后,下次更新收据时将删除此信息 - 例如,下次用户进行购买时.
有关所有其他类型购买的信息将在付款时添加到收据中,并无限期地保留在收据中.
此外,文档说:
成功续订订阅后,Store Kit会将续订事务添加到事务队列中.您的应用程序在启动时检查事务队列,并以与任何其他事务相同的方式处理续订.请注意,如果您的应用在订阅续订时已在运行,则不会调用事务观察器; 您的应用在下次启动时会发现续订.
对我而言,这意味着我可以监控已SKPaymentQueue完成的交易,然后检查应用收据以查找它们的记录.但我在IAP沙箱中没有看到这种情况.在IAP沙箱中,我有一个自动续订订阅,即自动续订(每个用户/购买6次,正常的沙箱行为),但要发现续订,我需要手动刷新应用收据.
假设这一切都按照我期望的方式工作,是否有最佳实践在IAP沙箱中进行测试以触发此行为?
哇,最后XCode 4.2/iOS5模拟器有StoreKit支持.
在我的应用程序中,我注意到当StoreKit要求AppleID /密码时,我可以使用模拟器屏幕键盘输入该信息,但不能通过Mac键盘输入.
这是正常的还是我还有其他问题?