在我的应用程序中,我有一个静态方法,可以同时从多个线程调用.我的数据是否存在混淆的危险?
在我的第一次尝试中,该方法不是静态的,我正在创建该类的多个实例.在那种情况下,我的数据以某种方式混淆了.我不确定这是怎么发生的,因为它有时只会发生.我还在调试.但是现在这个方法是静态的,到目前为止我没有问题.也许这只是运气.我不确定.
Ray Wenderlich撰写的"iOS6 by Tutorials"一书中有一篇关于编写更多"现代"Objective-C代码的非常好的章节.在一个部分中,书籍描述了如何将iVars从类的标题移动到实现文件中.由于所有iVars都应该是私有的,这似乎是正确的做法.
但到目前为止,我找到了3种方法.每个人都采用不同的方式.
1.)将@implementantion下的iVars置于一个花括号内(这就是本书中的方法).
2.)将iVars置于@implementantion下,不带花括号
3.)将iVars放在@implementantion(类扩展)上方的私有接口中
所有这些解决方案似乎都运行良好,到目前为止我没有注意到我的应用程序的行为有任何差异.我想没有"正确"的方法,但我需要编写一些教程,我只想为我的代码选择一种方法.
我该走哪条路?
编辑:我只是在这里谈论iVars.不是属性.只有对象只需要自身的其他变量,不应该暴露给外部.
代码示例
1)
#import "Person.h"
@implementation Person
{
int age;
NSString *name;
}
- (id)init
{
self = [super init];
if (self)
{
age = 40;
name = @"Holli";
}
return self;
}
@end
Run Code Online (Sandbox Code Playgroud)
2)
#import "Person.h"
@implementation Person
int age;
NSString *name;
- (id)init
{
self = [super init];
if (self)
{
age = 40;
name = @"Holli";
}
return self;
}
@end
Run Code Online (Sandbox Code Playgroud)
3)
#import "Person.h"
@interface Person()
{ …
Run Code Online (Sandbox Code Playgroud) 我开始使用C#时学到的第一件事就是最重要的一件事.您可以使用Reflector或其他工具反编译任何.NET程序集.许多开发人员都不知道这个事实,当我向他们展示他们的源代码时,他们中的大多数都感到震惊.
防止反编译仍然是一项艰巨的任务.我仍在寻找一种快速,简便,安全的方法.我不想混淆我的代码,所以我的方法名称将是a,b,c左右.反射器或其他工具应该无法将我的应用程序识别为.NET程序集.我已经了解了一些工具,但它们非常昂贵.有没有其他方法来保护我的应用程序?
编辑:
我的问题的原因不是防止盗版.我只想阻止竞争对手阅读我的代码.我知道他们会,他们已经做到了.他们甚至告诉过我.也许我有点偏执,但商业竞争对手阅读我的代码并不能让我感觉良好.
今天我的申请今天投了一个OutOfMemoryException
.对我来说,这几乎是不可能的,因为我有4GB的RAM和大量的虚拟内存.当我尝试将现有集合添加到新列表时发生错误.
List<Vehicle> vList = new List<Vehicle>(selectedVehicles);
Run Code Online (Sandbox Code Playgroud)
根据我的理解,这里分配的内存不多,因为我的新列表应该包含的车辆已经存在于内存中.我不得不承认这Vehicle
是一个非常复杂的课程,我试图一次性将大约50.000个项目添加到新列表中.但是由于Vehicle
应用程序中的所有内容都来自一个只有200MB大小的数据库:我不知道OutOfMemoryException
在这一点上可能会导致什么.
我现在有一个小问题.我想在NSTextField中按下Enter键时执行一个方法.用户应该能够输入他的数据,并且一旦他按下回车键就应该执行计算方法.
我试图理解required
在Swift类中使用关键字.
class SomeClass
{
required init() {
// initializer implementation goes here
}
}
Run Code Online (Sandbox Code Playgroud)
required
不会强迫我在我的子类中实现该方法.如果我想覆盖required
我的父类的指定初始化程序,我需要写,required
而不是override
.我知道它是如何工作的但却无法理解为什么我应该这样做.
有什么好处required
?据我所知,像C#这样的语言不具备这样的东西,并且工作得很好override
.
在Xcode 4中,我更改了我的cocoa应用程序的目标名称的名称,因为我想更改可执行文件的名称.Build工作正常但在编译Xcode之后仍然会启动仍在项目导航器的Products文件夹中列出的旧可执行文件.
如何在构建后更改Xcode 4启动的应用程序?
我总是在像Stackpanel这样的动态布局控件中使用ListView时遇到问题.
现在我有一个带有Stackpanel的Window作为Root-Control.Stackpanel完美地拉伸并占据整个窗口.在StackPanel内部还有一些其他控件,如文本框和按钮,所有对齐都很好.
最后一个Object是ListView.我希望ListView从StackPanel中获取剩余的空间,但它没有.即使使用VerticalAlignment ="Stretch",我也只能获得列标题.ListView仅在项目添加到项目时才会增长.所以我必须手动设置ListView高度.
如何使ListView填充StackPanel中的剩余空间,即使它是空的?
我在C#中真正喜欢的是通用列表.一个只能包含一种对象的列表.在Cocoa/Objective-C中有类似通用列表的东西吗?到目前为止,我只知道NSArray
谁将指向任何对象.
在我的项目中,我有一个绑定到ObservableCollection的WPF Listbox.每次我向Collection添加一个新项目时,相同的项目会自动添加到Listbox中.要显示列表框中的项目,我使用XAML Datatemplate.
我想要做的是在项目添加到Collection/Listbox时为项目设置动画.可以这样做吗?作为datatemplate中的动画可能吗?我想我需要一个触发器以某种方式启动这个动画,但是当添加一个新项目/ datatemplate时会触发什么触发器?
c# ×3
cocoa ×2
objective-c ×2
wpf ×2
.net ×1
animation ×1
data-binding ×1
datatemplate ×1
decompiling ×1
layout ×1
list ×1
listview ×1
reflector ×1
static ×1
swift ×1
xaml ×1
xcode ×1
xcode4 ×1