是否有可能以及如何从现有的*.ipa文件中获取有关配置文件的信息?
所有Hapi示例(以及Express中的类似示例)都显示路由在起始文件中定义:
var Hapi = require('hapi');
var server = new Hapi.Server();
server.connection({ port: 8000 });
server.route({
method: 'GET',
path: '/',
handler: function (request, reply) {
reply('Hello, world!');
}
});
server.route({
method: 'GET',
path: '/{name}',
handler: function (request, reply) {
reply('Hello, ' + encodeURIComponent(request.params.name) + '!');
}
});
server.start(function () {
console.log('Server running at:', server.info.uri);
});
Run Code Online (Sandbox Code Playgroud)
但是,在实现具有大量不同路由的生产应用程序时,不难想象这个文件有多大.因此,我想分解路由,将它们分组并存储在单独的文件中,如UserRoutes.js,CartRoutes.js,然后将它们附加到主文件中(添加到服务器对象).您如何建议将其分开然后添加?
我在storyboad中有三个控制器(FirstVC,SecondVC,ThirdVC),导航是顺序的:用户可以从FirstVC导航到SecondVC,然后导航到ThirdVC.现在,我需要制作一些按钮,它将从FirstVC打开ThirdVC,但也会将SecondVC放在导航堆栈上,所以当用户从ThirdVC按回来时,他将返回到SecondVC.因此,我不需要从FirstVC到SecondVC的动画,只需要在导航控制器堆栈上推送SecondVC,然后仅动画转换到ThirdVC.
我无法找到如何禁用performSegueWithIdentifier的动画,所以我想我应该手动从storyboard实例化SecondVC,将它放在导航堆栈上,然后为ThirdVC执行performSegueWithIdentifier.任何想法如何做到这一点?
我正在尝试使用CABasicAnimation执行我的图像旋转动画的自动重复.我试图在网上搜索如何设置这样的属性,但无法找到.CA动画真的没有这样的属性吗?我知道你可以设置一些巨大的值(这里)到repeatCount属性,但是,为什么UIView animateWithDuration有一个选项UIViewAnimationOptionRepeat以及该值是硬编码的呢?
我知道整个设计应该基于自然聚合(文档),但是我正在考虑为本地化(lang,key,text)实现一个单独的表,然后在其他表中使用键.但是,我无法找到任何关于这样做的例子.
任何指针可能会有所帮助!
我有一些数据计算方法(让它是"myMethod:"),我想将调用移动到另一个线程,因为我不想阻止我的主UI功能.所以,开始研究如何在另一个线程上调用我的方法.据我所知,目前有很多不同的方法可以做到这一点.这是一个清单:
a)使用纯线程(自iOS 2.0起可用):
[NSThread detachNewThreadSelector:@selector(myMethod:) toTarget:self withObject:_myParamsArray];
Run Code Online (Sandbox Code Playgroud)
b)使用简单的快捷方式(从iOS 2.0开始提供).可从继承的NSObject获得,但该方法也属于NSThread类:
[self performSelectorInBackground:@selector(myMethod:) withObject:_myParamsArray];
Run Code Online (Sandbox Code Playgroud)
c)使用Grand Central Dispatch队列的新方法(自iOS 4.0起可用):
dispatch_async(dispatch_get_global_queue(0, 0),
^ {
[self myMethod:_myParamsArray];
});
Run Code Online (Sandbox Code Playgroud)
d)不知何故,使用一些类,如NSOperation,NSBlockOperation或NSOperationQueue,虽然不确定如何完成它(一些例子将被赞赏)
目前,我使用了案例"b",但对其利弊和其他相关建议充满好奇.
更新:e)还找到了执行类似线程的另一种方法 - 运行循环.以下是苹果文档的摘录:
运行循环是一个事件处理循环,用于计划工作并协调传入事件的接收.运行循环的目的是在有工作时保持线程忙,并在没有线程时让线程进入休眠状态.
恕我直言,或多或少你正在处理相同的任务 - 如何在单独的线程上调用你的方法进行异步操作.
更新2:已经有一些NSInvocationOperation和NSOperationQueue和恕我直言的经验,这是非常方便的.根据Apple文档,GCD和NSOperations是实现多线程的首选方式.此外,NSOperations从iOS 4.0开始在GCD上运行.简而言之,您实例化NSIvocationOperation(作为对您的方法的调用)然后实例化NSOperationQueue并将调用添加到队列.NSOperationQueue足够聪明,你可以实例化多个NSIvocationOperation对象(包装方法调用)并将它们实例化为NSOperationQueue.其余的都有保证.NSOperationQueue确定执行调用所需的并行线程数(NSInvocationOperation)并为您处理.它可以在线程A上执行第一次调用,然后在线程B上执行第二次调用,在线程C上执行第三次,在线程B上执行第三次调用,因此您不必担心这一点.但是如果你愿意,你可以告诉NSOperationQueue最大线程如何用于执行调用(例如1),但我没有必要这样做.默认情况下,所有任务都在主线程以外的位置执行,因此默认情况下操作队列是异步的.此外,如果要在严格队列中执行方法调用(每个包装在单独的NSInvocationOperation中),则可以添加依赖项,因此NSOperationQueue将保留方法调用顺序.这是一个例子:
// wrap your method call into NSInvocationOperation object
NSInvocationOperation *currentOperation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(yourMethodCall) object:nil];
// _sharedOperationQueue is a shared NSOperationQueue
// get all executing operations from the queue and get the last operation
_lastOperation = [[_sharedOperationQueue operations] lastObject];
// check if _lastOperation is …Run Code Online (Sandbox Code Playgroud) concurrency multithreading objective-c grand-central-dispatch ios
当视图即将在屏幕上显示时,在UIViewController上调用viewWillAppear.是否有可能在UIView上获得类似的回调?
我们是否必须为网站中的每个表单生成令牌?我的意思是,每次为每个请求的表单生成不同的令牌?如果没有,为什么?
如何在点击时禁用按钮高亮效果?具有白色bg颜色和DarkGray文本颜色的自定义按钮.问题是按钮单击时文本变为白色.已经尝试但没有一个工作:
一个.在界面构建器中取消选中"突出显示的Ajusts图像".
湾 在按下按钮的方法中尝试设置突出显示= NO:
((UIButton *)sender).highlighted = NO
Run Code Online (Sandbox Code Playgroud)
C.尝试为highlihted状态设置相同的标题:
[button setTitle:[button titleForState:UIControlStateNormal] forState:UIControlStateHighlighted];
Run Code Online (Sandbox Code Playgroud)
有什么建议?
我有一些关于在工作中使用属性和实例变量的讨论,因此我想找到一个wiki的答案.现在,我知道在objective-c中没有真正的私有成员类型,一切都是公开的.但是,我有点担心我们应该如何设计我们的类以及遵守OOP原则.我想听听这三种设计方法的意见:
A.根据各种帖子甚至是新的斯坦福大学iPhone开发课程,你应该随时随地使用属性.然而恕我直言,这种方法制定了OOP设计原则,因为在这种情况下,所有成员都会公开.为什么我需要将所有内部/本地实例变量发布到外部?此外,如果您通过属性使用合成设置器,而不是直接使用本地ivar,则会有一些(但仍然)开销很小.这是一个示例:
//==== header file =====//
@interface MyClass : NSObject
@property (nonatomic, retain) NSString *publicMemberWithProperty;
@property (nonatomic, retain) NSString *propertyForPrivateMember;
@end
Run Code Online (Sandbox Code Playgroud)
B.另一种方法是在声明头文件的ivars(不宣相关性质)为私有成员,并且以相同的头文件,申报纯特性(不宣相对的ivars)为公众成员.在这种情况下,ivars将直接在课堂上使用.这种方法很有意义但不会使用属性的所有好处,因为我们在设置新值之前手动释放旧值.这是一个示例:
//==== header file =====//
@interface MyClass : NSObject{
NSString *_privateMember;
}
@property (nonatomic, retain) NSString *publicMemberWithProperty;
@end
Run Code Online (Sandbox Code Playgroud)
C.在头文件中为公共成员声明纯属性(不声明相对的ivars),并在实现文件的私有接口中为私有成员声明纯属性(不声明相对的ivars).这种方法恕我直言比第一种更明确,但同样的问题仍然存在:为什么我们必须拥有内部/本地成员的财产?这是一个示例:
//==== header file =====//
@interface MyClass : NSObject
@property (nonatomic, retain) NSString *publicMemberWithProperty;
@end
//==== implementation file =====//
@interface MyClass()
@property (nonatomic, retain) NSString *propertyForPrivateMember;
@end
Run Code Online (Sandbox Code Playgroud)
这个决定的自由让我感到很恼火,我想从各自的消息来源中找到关于应该如何做的确认.但是,我无法在Apple文档中找到这样严格的声明,所以请发布一个链接到Apple docs(如果有的话),或者发布任何其他清除它的理论.
ios ×6
objective-c ×6
cocoa-touch ×2
iphone ×2
uikit ×2
amazon ×1
animation ×1
concurrency ×1
csrf ×1
hapijs ×1
node.js ×1
oop ×1
properties ×1
repeat ×1
routes ×1
security ×1
storyboard ×1
uibutton ×1
uiview ×1