在创建课程时我总是停下来.我是建筑的中间人,所以请耐心等待.这是我的困境.我最终在一个课堂上,我必须问自己,"当我能从类的属性或私有支持领域得到我需要的东西时,这个方法是否需要参数?".
现在对于公共方法,很明显你应该有参数,因为有人会消耗你的类并使用这些方法,无论它们是在实例类还是静态类中.这场辩论与公共方法无关,因为这对我来说是显而易见的.如果你的类中有一个公共方法,即使让我们说你可以从该类中的属性或私有字段获得所需的值之一,而不是要求该方法的参数并使用该参数,应该仍然需要参数并使用参数,或者至少在你指定一些参数时不要计算它们.至少这是我查看公共方法的方式,因为谁知道其他人如何使用该方法,并且他们需要知道需要传递什么,并且他们需要将实际数据传递给方法,因为它们在您的课外.
例如,我正在创建和使用私有方法或类似的东西.让我们说我创建了一个自定义控件(.cs).它的工作是运行一系列方法,我已经打破了这个控件的逻辑,并创建了一些HTML字符串输出到浏览器.好吧,我创建了一个公共属性,这样任何使用此控件的人都可以为它提供某个对象.而且某个对象是我班级中有一半的方法用来帮助生成HTML.因为它是一个属性,我的自定义类中的任何方法都可以使用它.所以它完全绕过了在某些方法中创建参数的任何需要,因为我可以从属性中获取它.但后来我开始创建一个非常多的无参数方法,因为我从后备字段或后备字段和属性的组合中获取对象.或者我可能只是从一些事情中得到它们我能够在这个课程中得到我需要的其他方法吗?但是有些东西对你说不,那个坏人,你确实需要参数偶尔一次......至少是参数的组合,并在你的方法中使用一些支持字段或属性等,但并不总是折扣参数即使这些参数可能是一些内部传递给它(领域或属性).但是,如果我要将内部传递为params,那么只是访问和使用那些字段或属性而不是通过方法作为params而是直接在方法本身内部之间的细微差别.
但这让我感到困扰,因为那时我怀疑为什么我需要方法参数,以便在其他地方获取值.
有人可以在这里解释这条细线,并帮助我得出结论在你的方法或属性中使用大量支持字段而不是你在方法中指定的一些参数之间的界限.尽管有些参数仍然可以通过另一个方法调用后备字段或属性的值?
我希望这能让人感觉到任何意义,但我不能成为唯一遇到这种困境的人.也许我是唯一一个想到这个问题的人,我认为我不知道.但是我个人使用OOP的主要问题是有很多方法可以获得你需要的东西(构造函数,属性,支持字段,方法).
我UINavigationController有一系列的UIViewControllers关于它.在某些情况下,我想要回弹两个级别.我以为我可以popViewControllerAnimated连续两次调用它,但事实证明,第二次调用它时,它不会弹出任何东西而是返回NULL.我是否需要存储对目标VC的引用并调用popToViewControllerAnimated?我可以这样做,但它使我的代码变得复杂,因为UIViewController当我将VC推入堆栈时我必须传递*.
这是相关的片段:
UIViewController* one = [self.navigationController popViewControllerAnimated:YES];
if (...) {
// pop twice if we were doing XYZ
UIViewController *two = [self.navigationController popViewControllerAnimated:YES];
// stored in "one" and "two" for debugging, "two" is always 0 here.
}
Run Code Online (Sandbox Code Playgroud)
我在做一些奇怪的事吗?我想写一些惯用的代码,所以如果"正确"的方式是打电话popToViewControllerAnimated,或者完全不同的话,我会乐意改变它.
我现在正在开展一个项目,需要在日期选择器上有很大的灵活性.用户可以在几千年前插入日期,以及截至今天的日期.典型的日期选择器非常适合在几年内选择彼此的日期,但在选择巨大差异的日期时不太好.
有没有人看过一个可以更容易处理这个要求的插件?也许这里需要老式的手工入门.
我在我的控制器中添加了验证检查,修改ModelState了验证失败的情况.
例如:
private bool ValidateMoney(string raw, string name, decimal min, decimal max) {
try {
var dec = Convert.ToDecimal(raw);
if (dec < min) {
throw new ArgumentOutOfRangeException(name + " must be >= " + min);
}
else if (dec > max) {
throw new ArgumentOutOfRangeException(name + " must be <= " + max);
}
}
catch (Exception ex) {
ModelState.AddModelError(name, ex.GetUserMessage());
}
return ModelState.IsValid;
}
Run Code Online (Sandbox Code Playgroud)
但是,我永远不知道传递key参数的值ModelState.AddModelError.(在示例中,我只是将其设置为我的UI显示名称.)
参数是什么以及我应该如何使用它?
我想知道Python是否有类似C#匿名类的功能.为了澄清,这是一个示例C#片段:
var foo = new { x = 1, y = 2 };
var bar = new { y = 2, x = 1 };
foo.Equals(bar); // "true"
Run Code Online (Sandbox Code Playgroud)
在Python中,我会想象这样的事情:
foo = record(x = 1, y = 2)
bar = record(y = 2, x = 1)
foo == bar # true
Run Code Online (Sandbox Code Playgroud)
具体要求是能够在表达式上下文中创建具有指定字段的对象(例如,在lambda和其他不允许语句的地方可用),没有额外的外部声明,并且能够通过普通成员按名称访问各个组件访问语法foo.bar.创建的对象还应该按组件名称 (而不是按位置,如元组那样)实现结构比较.
特别是:元组不是因为它们的组件没有命名; 课程不是因为它们需要声明; dicts不是因为他们有不受欢迎的foo["bar"]语法来访问组件.
namedtuple不是它,因为即使你定义内联类型它仍然需要一个名称,并且比较是基于位置的,而不是基于名称的.特别是:
def foo(): return namedtuple("Foo", "x y")(x = 1, y = 2)
def bar(): return namedtuple("Foo", "y x")(x = …Run Code Online (Sandbox Code Playgroud) 是否有可能将应用程序从Xcode安装到远程iPhone?我有开发帐户,可以在本地安装.
我目前在悉尼,想在德国同事的设备上安装一个游戏原型.这项工作仍在进行中,因此必须经常进行......
有没有办法在没有越狱的情况下做到这一点?
谢谢
汤姆
出于某种原因,我的UITextFields都不会自动进行资本化.我已经在InterfaceBuilder中设置了属性以及编程,如下所示.
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"search_cell"];
UITextField *tf = [[UITextField alloc] initWithFrame:CGRectMake(12, 10, 320, 32)];
tf.autocapitalizationType = UITextAutocapitalizationTypeWords;
tf.returnKeyType = UIReturnKeySearch;
tf.font = [UIFont boldSystemFontOfSize:20.0];
tf.delegate = self;
[cell addSubview:tf];
[tf becomeFirstResponder];
Run Code Online (Sandbox Code Playgroud)
无论如何我可以设置一些标志,在整个应用程序中禁用自动资本化而没有意识到它?
谢谢
可能重复:
何时使用虚拟析构函数?
您的C++对象的析构函数何时应该virtual?
我有一个在我的每个CollectionView项目中使用的视图.我从我的视图中有一个关于CollectionViewItem的IBOutlet,我已经将它连接到Interface Builder中.我想在我的视图代码中访问来自representObject(它是一个Core Data对象)的值.这是我正在尝试做的一个示例 - 访问representObject的序列值:
在.h文件中:
IBOutlet NSCollectionViewItem *item; // Connected in IB
Run Code Online (Sandbox Code Playgroud)
在.m文件中
NSString *seq = [[item representedObject] valueForKey:@"seq"];
NSLog(@"Seq: %@", seq); // returns Seq: (null)
Run Code Online (Sandbox Code Playgroud)
我知道seq是填充的,因为我使用representObject.seq键路径将它绑定到IB中CollectionViewItem视图中的标签,并且可以正常工作.
知道为什么当我尝试在视图的代码中访问seq的值时它返回null吗?
我知道语法:
ALTER TABLE [TheTable] DROP CONSTRAINT [TheDefaultConstraint]
Run Code Online (Sandbox Code Playgroud)
但是当我不知道它的名字时,如何删除默认约束?(也就是说,它是在CREATE TABLE时间自动生成的.)
iphone ×3
c# ×2
objective-c ×2
sdk ×2
.net ×1
asp.net-mvc ×1
c++ ×1
cocoa ×1
constraints ×1
date ×1
default ×1
install ×1
jquery ×1
python ×1
sql ×1
t-sql ×1
uitextfield ×1