Objective C, как Smalltalk, не имеет никакого понятия "частных" по сравнению с "общедоступными" методами. Любое сообщение может быть отправлено в любой объект в любое время.
то, Что можно сделать, бросить NSInternalInconsistencyException
, если Ваш -init
метод вызывается:
- (id)init {
[self release];
@throw [NSException exceptionWithName:NSInternalInconsistencyException
reason:@"-init is not a valid initializer for the class Foo"
userInfo:nil];
return nil;
}
другая альтернатива —, который, вероятно, намного лучше на практике —, должна сделать -init
, делают что-то разумное для Вашего класса если вообще возможный.
, При попытке сделать это, потому что Вы пытаетесь "удостовериться", одноэлементный объект используется, не беспокоиться. А именно, не беспокойтесь "переопределением +allocWithZone:
, -init
, -retain
, -release
" метод создания одиночных элементов. Это является фактически всегда ненужным и просто добавляет сложность ни для какого реального значительного преимущества.
Вместо этого просто запишите свой код, таким образом, что Ваш +sharedWhatever
метод - то, как Вы получаете доступ к одиночному элементу и документу что как способ получить одноэлементный экземпляр в Вашем заголовке. Это должно быть всем, в чем Вы нуждаетесь в подавляющем большинстве случаев.
. Вы можете сделать это с помощью Math.Floor . Однако вам нужно будет умножить * 100 и разделить, так как вы можете ' t укажите количество цифр
Dim theNumber as Double
theNumber = 2.556
Dim theRounded = Math.Sign(theNumber) * Math.Floor(Math.Abs(theNumber) * 100) / 100.0
Другой способ сделать это, который не зависит от использования типа String:
Dim numberToRound As Decimal
Dim truncatedResult As Decimal
numberToRound = 2.556
truncatedResult = (Fix(numberToRound*100))/100
Ответ Math.Floor () хорош. Я не уверен, в каких средах VB определено Fix (). Как указывает Джастин, Math.Floor () не будет работать с отрицательными числами. Вам нужно будет взять абсолютное значение, а затем умножить его на SGN (). Я не знаю точного имени функции, которую вы бы использовали для получения SiGN (а не sin ()) числа.
В псевдокоде с учетом отрицательных значений результат будет выглядеть так:
result = sgn( num ) * floor( abs( num * RoundToDig ) ) / RoundToDig
- Пушистые коровы мычат и расслабляются.