我是嵌套块,它看起来像UGGGGLY.有没有办法写这个不那么难看?主要是寻找语法建议,而不是结构,但我也会接受.
我的块工厂方法,
-(NSImage *(^)(CGFloat size, BOOL preview))resizeBlock {
return (NSImage *(^)(CGFloat size, BOOL preview))[[^(CGFloat size, BOOL preview){
// image-resizing code
return [[[NSImage alloc] init] autorelease];
} copy] autorelease];
}
Run Code Online (Sandbox Code Playgroud)
从许多类似于此的函数调用
-(void)queueResize:(CGFloat)targetSize toView:(NSImageView *)targetView {
NSImage*(^sizeBlock)(CGFloat,BOOL) = [self resizeBlock];
NSBlockOperation *bo = [NSBlockOperation blockOperationWithBlock:^(void) {
NSImage *previewImage = (NSImage*)sizeBlock(targetSize,YES);
targetView.image = previewImage;
}];
[queue addOperation:bo];
}
Run Code Online (Sandbox Code Playgroud)
queue是一个NSOperationQueue对象.没有所有(丑陋的丑陋)演员,它将无法编译.Amidoinitrite?
编辑:根据Dave DeLong的回答,和http://www.cimgf.com/2008/02/16/cocoa-tutorial-nsoperation-and-nsoperationqueue/,我改变了行
targetView.image = previewImage;
Run Code Online (Sandbox Code Playgroud)
成为,
[targetView performSelectorOnMainThread:@selector(setImage:) withObject:previewImage waitUntilDone:YES];
Run Code Online (Sandbox Code Playgroud) 我有一个应用程序,它目前在应用程序商店中.
我对另一个应用程序有一个想法,它将与我发布的应用程序共享许多相同的结构.它们都是照片处理应用程序,因此用于导入,共享,保存,旋转等的代码库都将在两者之间共享.但是,照片处理的类型会有所不同.
我的想法是,当我更新应用程序#1时,我希望在应用程序#2中进行这些更改,反之亦然.
从一个代码库获得两个应用程序的最佳方法是什么?
我考虑过的策略,
我也对其他想法持开放态度.
我发现人们在讨论这个问题,但主要是与微小的变化有关...即一个带有几个不同品牌/数据文件的应用程序.我的两个应用程序将是相当不同的,所以我不认为这些技术必然适用.
我碰到了Xcode 3的Terminal One-liner,每次尝试编译并遇到错误时,它都会播放Inception“ BWAAAAHNN”声音。它可以很好地起到阻止错误的作用,因为没人想被这种声音震撼了。
有人知道这是怎么做的吗?它仍然可以在Xcode 4中使用吗?
编辑:感谢贾斯汀的提示(“首选项”>“行为”>“构建失败”>“播放声音”),我这样做:
curl http://www.freesound.org/data/previews/73/73581_634166-lq.mp3 -o /Developer/Extras/trombone.mp3
defaults write com.apple.dt.Xcode "Xcode.AlertEvents.4_1" -dict-add "Xcode.AlertEvent.BuildFails" '<dict><key>Xcode.Alert.Sound</key><dict><key>enabled</key><true/><key>soundPath</key><string>/Developer/Extras/trombone.mp3</string></dict></dict>'
defaults write com.apple.dt.Xcode "Xcode.AlertEvents" -dict-add "Xcode.AlertEvent.BuildFails" '<dict><key>Xcode.Alert.Sound</key><dict><key>enabled</key><true/><key>soundPath</key><string>/Developer/Extras/trombone.mp3</string></dict></dict>'
Run Code Online (Sandbox Code Playgroud)
尽管我不确定是否需要第三行(Xcode似乎保留了两个版本的行为设置?),但它多于1行。另外,这次我选择了不同的声音。:)
在iOS 6中,点击Photos应用程序中的操作按钮会显示标准的UIActivityViewController:

从Messages中执行相同操作会提供一组不同的选项.这看起来像是在使用UIDocumentInteractionController api来拉取所有可以处理图像的应用程序.

我的问题是双重的:
如何进入"消息"操作菜单?Tumblr和Halftone,仅举几例,已经做到了......我似乎无法找到文档.
如何显示消息样式的操作菜单?当我呈现一个UIActivityViewController它没有那些选项...只是标准设置facebook/twitter/copy/print/save to camera roll/etc.
谢谢!
sharing ios uidocumentinteraction uidocument uiactivityviewcontroller
我有NSString一些句子,我想把它分成NSArray句子.以前有人解决了这个问题吗?我发现enumerateSubstringsInRange:options:usingBlock:哪个能够做到,但看起来它在iPhone上不可用(仅限Snow Leopard).我考虑过基于句点分割字符串,但这似乎不是很强大.
到目前为止,我最好的选择似乎是使用RegexKitLite将其正则化为一系列句子.解决方案?
好的,所以在我的网络应用程序的API中,我有一个传入的HTTP发布请求.我想将POST请求传递给其他服务器,而不会丢失POST标头中的数据.这可能吗?我会使用哪种类型的重定向?php例子?
编辑:HTTP请求来自移动应用程序,而不是Web浏览器.
谢谢!
Rails给我的网址有错误的ID.它将父ID传递给子,将子ID传递给父.
在我的routes.rb我有
resources :calendars do
resources :events
end
Run Code Online (Sandbox Code Playgroud)
这rake routes告诉我正在建立良好的路线,例如
calendar_event GET /calendars/:calendar_id/events/:id(.:format) {:controller=>"events", :action=>"show"}
Run Code Online (Sandbox Code Playgroud)
所以当我从我的视角中询问该路线的路径时,
<%= link_to "#{event.name} @ #{event.calendar.name} #{event.calendar.year}", calendar_event_path(event) %>
Run Code Online (Sandbox Code Playgroud)
它给了我一个ids反转的网址...
http://localhost:3000/calendars/<-eventid->/events/<-calendarid->
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激!!!
编辑:在我的模型中,事件belongs_to :calendar和日历has_many :events.我也使用Mongoid作为我的ORM,而不是ActiveRecord,但我希望这不是问题.
这是场景。我想要显示许多不同的视图,具体取决于我向用户显示的模型对象。所以我建立了一个协议,任何实现它的视图都可以被呈现。
class MyItem { /* some model properties */ }
protocol ItemView: class {
// some protocol methods (e.g. updateWithItem(), etc)
func setupItem(item: MyItem)
}
class SpecificItemView: UIView, ItemView { /* there will be multiple classes like this */
func setupItem(item: MyItem) {
// do item setup
}
}
class AnotherItemView: UIView, ItemView {
func setupItem(item: MyItem) {
// do DIFFERENT item setup
}
}
Run Code Online (Sandbox Code Playgroud)
然后,当我在视图控制器中使用它们时,我得到了一个 ItemView 类:
class MyViewController: UIViewController {
var itemView: ItemView? // could be a SpecificItemView …Run Code Online (Sandbox Code Playgroud) 我想通过OS禁用自动文本捕获,如果你输入UITextField/UITextView OS在你的应用程序中捕获这个文本(如果没有在它的字典中找到),它将作为纯文本存储在/ text.dat文件中根/库/键盘
现在,如果您打开并阅读此文件,则可以轻松阅读您在应用程序中输入的内容.
我的要求是,我如何禁用此功能,以便在我的应用程序中,操作系统不会捕获文本输入到此文件中?
您甚至可以在iPhone Simualtor上查看此信息
我temped使用的int,并作出0 == NO,1 == YES和别的==未定义.显然有一百万种方法可以做这样的事情,但对你来说这似乎是最好的方式?我能想到的问题包括简单性和内存占用(例如,如果我有很多这些?).
另一种方法是使用两个BOOL,一个用于isDefined,一个用于value
其他方式,
typedef enum { CPStatusUndefined, CPStatusAvailable, CPStatusUnavailable } CPStatus;
编辑,用例是:
我有一个很难计算的是/否属性.在检查时,会经常检查(通过UIMenuControllerOFTEN),但除非用户选择它,否则永远不会检查它.我选择处理这个问题的方式是一个三型变量.第一次检查时,如果未定义,则计算是/否值并返回,之后返回yes/no值.
我有这个代码,我正在尝试从php移植到c/objective-c:
if ($byteIndex < count($data) ) {
$light = ( ( ($data[$byteIndex] >> $bitIndex) & 1) == 1);
}
Run Code Online (Sandbox Code Playgroud)
但我似乎无法找到>>在这里指示的任何地方.就此而言,也不是"&1".
我有一个深嵌套的dict(从json解码,来自instagram api).我的初始代码是这样的:
caption = post['caption']['text']
Run Code Online (Sandbox Code Playgroud)
但是如果'caption'键或'text'键不存在,那将抛出NoneType或KeyError错误.
所以我想出了这个:
caption = post.get('caption', {}).get("text")
Run Code Online (Sandbox Code Playgroud)
哪个有效,但我不确定它的风格.例如,如果我将此技术应用于我正在尝试检索的更深层次的嵌套属性之一,它看起来非常难看:
image_url = post.get('images',{}).get('standard_resolution',{}).get('url')
Run Code Online (Sandbox Code Playgroud)
有没有更好,更pythonic的方式来写这个?我的目标是检索数据(如果有的话),但如果数据不存在则不会阻止执行.
谢谢!
我正在实施此答案中描述的摇动手势,但如果我摇动手机的时间超过一秒钟,则无法调用motionEnded.
OS保证的motionBegan和motionEnded事件的比率是否为1比1,或者这是响应者链的问题,事件是否被发送到其他地方?
iphone ×3
objective-c ×3
cocoa ×2
cocoa-touch ×2
ios ×2
php ×2
xcode ×2
boolean ×1
class ×1
dictionary ×1
http ×1
keyerror ×1
nonetype ×1
nsstring ×1
operators ×1
polymorphism ×1
porting ×1
post ×1
properties ×1
protocols ×1
python ×1
redirect ×1
routing ×1
ruby ×1
security ×1
sharing ×1
string ×1
styles ×1
swift ×1
uidocument ×1