有没有办法确定Xcode项目包含多少行代码?我保证不会将此类信息用于管理测量或员工基准测试目的.;)
如何在非视网膜显示器上模拟Mac OS X 10.8 Mountain Lion中的视网膜显示(HiDPI模式)?
我有一个Obj-C对象,里面有一堆方法.有时一个方法需要在同一个对象中调用另一个方法.我似乎无法弄清楚如何使用C方法调用Obj-C方法...
工作:调用Obj-C方法的Obj-C方法:
[self objCMethod];
Run Code Online (Sandbox Code Playgroud)
工作:调用C方法的Obj-C方法:
cMethod();
Run Code Online (Sandbox Code Playgroud)
不工作:调用Obj-C方法的C方法:
[self objCMethod]; // <--- this does not work
Run Code Online (Sandbox Code Playgroud)
最后一个示例导致编译器吐出此错误:
错误:'self'未声明(首次使用此功能)
两个问题.为什么C函数看不到"自"变量,即使它在"自"对象内部,如何在不引起错误的情况下调用它?非常感谢任何帮助!:)
Apple有时在其枚举定义中使用Bitwise-Shift运算符.例如,在CGDirectDisplay.h文件中,它是Core Graphics的一部分:
enum {
kCGDisplayBeginConfigurationFlag = (1 << 0),
kCGDisplayMovedFlag = (1 << 1),
kCGDisplaySetMainFlag = (1 << 2),
kCGDisplaySetModeFlag = (1 << 3),
kCGDisplayAddFlag = (1 << 4),
kCGDisplayRemoveFlag = (1 << 5),
kCGDisplayEnabledFlag = (1 << 8),
kCGDisplayDisabledFlag = (1 << 9),
kCGDisplayMirrorFlag = (1 << 10),
kCGDisplayUnMirrorFlag = (1 << 11),
kCGDisplayDesktopShapeChangedFlag = (1 << 12)
};
typedef uint32_t CGDisplayChangeSummaryFlags;
Run Code Online (Sandbox Code Playgroud)
为什么不简单地在"普通" 枚举中使用递增int?
我有一个像这样的核心数据模型设置:
单个Blockbuster内部可以有多个DVD(To-Many).每张DVD只能是单个Blockbuster(To-One)的一部分.
有多个Blockbuster,有些可能包含与其他Blockbuster的DVD实体共享相同标题的DVD实体.例如,Blockbuster A可能有"变形金刚2"的副本,Blockbuster C和Blockbuster G也是如此.让我们假装没有Blockbuster拥有同一部电影的多个副本.
我有兴趣从Blockbuster C获取变形金刚2 DVD .我不想要Blockbuster A或G的副本,因为我的老板经常光顾那里,我只能在Blockbuster C中焚烧这片垃圾.
我的问题是,我该如何形成NSFetchRequest它抓起DVD与标题 "变形金刚2",这是一个孩子一鸣惊人 "C"父实体?
这种类型的请求将获取所有"Transformer 2"DVD,但不是特定于Blockbuster C实体的DVD:
NSManagedObjectContext *moc = [self managedObjectContext];
NSString *aTitle = @"Transformers 2";
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"title == %@", aTitle];
[request setEntity:[NSEntityDescription entityForName:@"DVD" inManagedObjectContext:moc]];
[request setPredicate:predicate];
NSError …Run Code Online (Sandbox Code Playgroud) 在Python 2.7中,我正在编写一个类,该类调用API中的函数,该函数可能会或可能不会返回空字符串.此外,空字符串可能是unicode u""或非unicode "".我想知道检查这个的最佳方法是什么?
以下代码适用于空字符串,但不适用于空的unicode字符串:
class FooClass():
string = ...
string = might_return_normal_empty_string_or_unicode_empty_string(string)
# Works for normal empty strings, not unicode:
if string is not None:
print "string is not an empty string."
Run Code Online (Sandbox Code Playgroud)
相反,我必须像这样编写它以使其适用于unicode:
class BarClass():
string = ...
string = might_return_normal_empty_string_or_unicode_empty_string(string)
# Works for unicode empty strings, not normal:
if string is not u"":
print "string is not an empty string."
Run Code Online (Sandbox Code Playgroud)
...并且喜欢这样以使其在非unicode和unicode中用于空字符串:
class FooBarClass():
string = ...
string = might_return_normal_empty_string_or_unicode_empty_string(string)
# Works for both normal and unicode …Run Code Online (Sandbox Code Playgroud) 我使用Sessions Middleware和Auth Middleware运行Django 1.3:
# settings.py
SESSION_ENGINE = django.contrib.sessions.backends.db # Persist sessions to DB
SESSION_COOKIE_AGE = 1209600 # Cookies last 2 weeks
Run Code Online (Sandbox Code Playgroud)
每次用户从其他位置(不同的计算机/浏览器)登录时,Session()都会创建一个新的并使用唯一的方式保存session_id.这可能导致同一用户的多个数据库条目.他们的登录在该节点上持续存在,直到cookie被删除或会话到期为止.
当用户更改其密码时,我想从数据库中删除该用户的所有未到期会话.密码更改后,他们被迫重新登录.这是出于安全目的,例如,如果您的计算机被盗,或者您不小心将自己登录在公共终端上.
我想知道优化它的最佳方法.这是我如何做到的:
# sessions_helpers.py
from django.contrib.sessions.models import Session
import datetime
def all_unexpired_sessions_for_user(user):
user_sessions = []
all_sessions = Session.objects.filter(expire_date__gte=datetime.datetime.now())
for session in all_sessions:
session_data = session.get_decoded()
if user.pk == session_data.get('_auth_user_id'):
user_sessions.append(session)
return user_sessions
def delete_all_unexpired_sessions_for_user(user, session_to_omit=None):
for session in all_unexpired_sessions_for_user(user):
if session is not session_to_omit:
session.delete()
Run Code Online (Sandbox Code Playgroud)
一个非常简化的视图:
# views.py
from django.http import HttpResponse …Run Code Online (Sandbox Code Playgroud) python django django-authentication session-cookies django-sessions
我试图更好地理解Cocoa的键值编码(KVC)机制.我已经阅读了Apple的Key-Value Programming Guide,但对于某些KVC方法如何搜索密钥仍然有点困惑.特别是mutableArrayValueForKey : .
下面我将解释我如何理解valueForKey:KVC"getters"的工作方式.然后我将讨论有关mutableArrayValueForKey的问题.
有七种不同的"getter"KVC方法:
- (id)valueForKey:(NSString *)key;
- (id)valueForKeyPath:(NSString *)keyPath;
- (NSDictionary *)dictionaryWithValuesForKeys:(NSArray *)keys;
- (NSMutableArray *)mutableArrayValueForKey:(NSString *)key;
- (NSMutableArray *)mutableArrayValueForKeyPath:(NSString *)keyPath;
- (NSMutableSet *)mutableSetValueForKey:(NSString *)key;
- (NSMutableSet *)mutableSetValueForKeyPath:(NSString *)keyPath;
Run Code Online (Sandbox Code Playgroud)
在Property中搜索Value(名为myKey)时,Apple的文档声明valueForKey:这样搜索:
-getMyKey,-myKey和-isMyKey(按此顺序)如果没有找到,它会尝试这些有序的,多对多的getter(NSArray):
// Required:
- (NSUInteger)countOfMyKey;
// Requires At Least One:
- (id)objectInMyKeyAtIndex:(NSUInteger)index;
- (NSArray *)myKeyAtIndexes:(NSIndexSet *)indexes;
// Optional (improves performance):
- (void)getMyKey:(KeyClass **)buffer range:(NSRange)inRange;
Run Code Online (Sandbox Code Playgroud)接下来,它尝试这些无序的,多对多的getter(NSSet):
- (NSUInteger)countOfMyKey;
- (NSEnumerator *)enumeratorOfMyKey; …Run Code Online (Sandbox Code Playgroud)有时打开一个解释器很好,键入一些代码并查看它是否正常工作,而不是像Xcode项目一样编译大量的东西,只是为了快速测试一些东西.是否存在针对Mac的Objective-C解释器,或者我运气不好?
更新: App Store中有一个名为CodeRunner的付费程序,它允许您快速运行Obj-C(以及其他几种语言).它不是一名翻译,但很适合快速测试想法:http://itunes.apple.com/us/app/coderunner/id433335799?mt = 12
即使在经过多次Google搜索之后,我对C语言中的常量表达式有什么不同感到困惑.你能提供一个C的常量表达式的例子吗?
objective-c ×3
c ×2
cocoa ×2
python ×2
bit-shift ×1
code-metrics ×1
coderunner ×1
core-data ×1
django ×1
enums ×1
interpreter ×1
macos ×1
self ×1
string ×1
xcode ×1