小编Dav*_*her的帖子

如何找出Xcode项目中有多少行代码?

有没有办法确定Xcode项目包含多少行代码?我保证不会将此类信息用于管理测量或员工基准测试目的.;)

xcode code-metrics

141
推荐指数
13
解决办法
8万
查看次数

78
推荐指数
4
解决办法
9万
查看次数

如何从C方法调用Objective-C方法?

我有一个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函数看不到"自"变量,即使它在"自"对象内部,如何在不引起错误的情况下调用它?非常感谢任何帮助!:)

objective-c self

38
推荐指数
4
解决办法
2万
查看次数

为什么在C enum定义中使用Bitwise-Shift运算符?

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

c enums bit-shift bitwise-operators

38
推荐指数
3
解决办法
2万
查看次数

如何根据属性和关系创建过滤Core Data对象的NSFetchRequest?

我有一个像这样的核心数据模型设置:

  • 百视达实体
    • DVD实体的To-Many关系.
  • DVD实体
    • title属性(字符串)
    • To-One与父Blockbuster实体的关系

单个Blockbuster内部可以有多个DVD(To-Many).每张DVD只能是单个Blockbuster(To-One)的一部分.

有多个Blockbuster,有些可能包含与其他Blockbuster的DVD实体共享相同标题的DVD实体.例如,Blockbuster A可能有"变形金刚2"的副本,Blockbuster CBlockbuster G也是如此.让我们假装没有Blockbuster拥有同一部电影的多个副本.

我有兴趣从Blockbuster C获取变形金刚2 DVD .我不想要Blockbuster AG的副本,因为我的老板经常光顾那里,我只能在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)

cocoa entity-relationship core-data objective-c

28
推荐指数
1
解决办法
4万
查看次数

在Python中对普通和Unicode空字符串进行"非无"测试的最佳方法是什么?

在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)

python string

21
推荐指数
3
解决办法
4万
查看次数

最优化的方法是删除Django中特定用户的所有会话?

我使用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

17
推荐指数
2
解决办法
1万
查看次数

mutableArrayValueForKey的KVC搜索模式是什么?

我试图更好地理解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:这样搜索:

  1. 在接收器内尝试-getMyKey,-myKey-isMyKey(按此顺序)
  2. 如果没有找到,它会尝试这些有序的,多对多的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)
  3. 接下来,它尝试这些无序的,多对多的getter(NSSet):

    - (NSUInteger)countOfMyKey;
    - (NSEnumerator *)enumeratorOfMyKey; …
    Run Code Online (Sandbox Code Playgroud)

cocoa key-value-coding nsmutablearray

16
推荐指数
1
解决办法
4963
查看次数

是否有Mac的Objective-C解释器?

有时打开一个解释器很好,键入一些代码并查看它是否正常工作,而不是像Xcode项目一样编译大量的东西,只是为了快速测试一些东西.是否存在针对Mac的Objective-C解释器,或者我运气不好?

更新: App Store中有一个名为CodeRunner的付费程序,它允许您快速运行Obj-C(以及其他几种语言).它不是一名翻译,但很适合快速测试想法:http://itunes.apple.com/us/app/coderunner/id433335799?mt = 12

interpreter objective-c coderunner

12
推荐指数
2
解决办法
4161
查看次数

C中的"常量表达式"是什么,不是什么?

即使在经过多次Google搜索之后,我对C语言中的常量表达式有什么不同感到困惑.你能提供一个C的常量表达式的例子吗?

c constant-expression

10
推荐指数
3
解决办法
1万
查看次数